19: サンプル・スタックから、次のステップに進む
この章の概略
- ここから先に進むための参考になるサンプル・スタック
- スライドショーのサンプル・スタックと、日本語のコメントをスクリプトに書き込むプラグイン「jpComments」
これで第一部「ほとんど英語テキストでの開発」は最終章です。LiveCodeの開発で押さえておくべき事柄は一通り書いたので、次のステップに進むには、開発しようと思ったり、興味のある分野のサンプル・スタックを見る事が大事です。メニューには「User Samples」「Tutorials」「Resources」と3種類に分類したサンプル・スタックがあります。たぶん英語を読むのはメンドウと言う人も多いでしょう。英語の解説部分はハショっても、サンプル・スタックだけ直接動きを見ながらスクリプトを読んでも、内容はかなり分かるし、それはそれで楽しいです。
もう一カ所良質のサンプル・スタックがダウンロードできる所を書いておきます。
Tactile Media:
http://www.tactilemedia.com/
http://www.tactilemedia.com/site_files/software/tutorials.html
日本語を使う開発に興味のある方は、次の第二部「日本語テキストを使う開発」を読んでください。LiveCode(RunRev)は日本語ができないと言うウワサが、誇大に広まっているようですが、何度か書いているように、オペレーション・システムでのファイルパスと、スクリプト・エディターに日本語コメントが書けないと言う問題以外は、たぶんほとんどLiveCodeの日本語の使い方を知らないで、言っているのではと思っています。日本語コメントについては、このチュートリアルのために作った、プラグインを使う簡易的な方法をこの章で書きます。
スライドショー サンプル・スタック
このスライドショー・スタックは、ニューヨークに住んでいる私の友人が、去年東京の某大学で、開拓時代から現代までのアメリカ美術史の、ゲスト講師に招かれて講義すると言う時に、相談を受けて作ったものです。彼は15年程前まで、日本でアメリカ美術の講座を持っていましたが、現在70代後半、コンピューターを使ったプレゼンテーションの経験もなく、とにかくクリックだけですべてできるように作ったものに、スクリプトに日本語コメントを付けて少し手を加えました。アシストしてくれる人に、事前にインターネットで送っておいたので、特に問題もなく講座は無事に終わったそうです。
注:LiveCode 6.5以降で開くとエラーウインドウが出ます。
サンプル ダウンロード:
slideshow.zip
http://kenjikojima.com/livecode/download/slideshow.zip
「slideshow.zip」を拡大すると、下の図のように「imagesフォルダー」「jpComments.livecode」「slideshow.livecode」が入っています。「imagesフォルダー」にはサンプルのJPEGファイルが5点と、イメージそれぞれに付ける日本語の説明が5行ある「text.txt」が入っています。サンプルに付けたJPEGはすべて同じサイズですが、どんな比率の写真でもOKです。日本語の説明は必要がなければ、空白にします。日本語原稿はユニコードのUTF8で保存しています。
「slideshow.livecode」が本体のスタックです。
注:LiveCode 7用に修正した「スライドショー」スタック
LiveCode 7 サンプル ダウンロード: slideshow-LC7.zip
http://kenjikojima.com/livecode/download/slideshow-LC7.zip
日本語コメントを書くプラグイン
注:LiveCode 7以降は日本語をスクリプト・エディターに書き込めるので必要ありません。
「jpComments.livecode」はこのチュートリアルのために作った、日本語のコメントをスクリプト・エディターに書き込んで、またそれを読むプラグインです。日本語のコメントを書き込むと言いましたが、実際は日本語を「base64」と言う文字コードに変換して、LiveCodeのスクリプト・エディターにコピー&ペーストします。それをもう一度プラグインの「jpComments.livecode」で読み込んで、プラグインのフィールドに日本語で表示します。私は今まで英語でコメントを書き込んで来たので、特に必要ではありませんが、日本で少しでもLiveCodeが使いやすいように、どうしても日本語でコメントを書き込みたい人のために作ってみました。オープン・ソースですから、だれか低レベルの言語でLiveCode本体の改善をしてくれれば一番良いですが、それまでの簡易的な日本語化です。
LiveCodeのソースはここからダウンロードできます。
https://github.com/runrev
それとユニコード(日本語)は扱いさえ分かっていれば、これくらいの事はできると言う事と、開発ツールはLiveCodeの言葉で自作できるデモでもあります。
スライドショーはフルスクリーンなので、スタックを開くとLiveCodeの開発ツールもメニューも見えなくなります。まず始めに「jpComments.livecode」から開いてください。常時使うようでしたら、プラグイン・フォルダーにインストールするのが良いです。今は「Fileメニュー」からオープンします。
トップにあるフィールドに日本語のコメントをタイプして、その下「日本語をBase64に変換してコピーします。」をクリックすると、その下のフィールドに始めに「--j 」の付いた英数字が表れて、その時点で変換されたその文字列がクリップボードにコピーされます。左右は自動で28文字に行替えされます。行が変わった始めには必ず「--j 」が付いています。開発中のスタックのスクリプト・エディターに変換されたその文字列をペーストしたら、スクリプトを確定させるスクリプト・エディター左上の「Apply」をクリックするか、MacOSなら「コマンド・キー + リターン・キー」。Windowsは「コントロール・キー + リターン・キー」を叩いてください。確定させないと「コメントを日本語に変換してスクリプトを見る」は正しく働きません。長いスクリプトをプラグインのテキスト・フィールドで見るのが大変な時は、スクリプト・エディターから「--j 」のラインだけをコピーして、プラグインの2番目のフィールドにペーストしたら、ラジオ・ボタン「上のフィールド」を選んで「コメントを日本語に変換してスクリプトを見る」をクリックします。
「slideshow.livecode」を開く前に、メッセージ・ボックスを開いてください。スタックを開いたら
show menubar
hide this stack
どちらか一行をメッセージ・ボックスから送ります。Windowsでは「hide this stack」だけが有効です。サンプル・スタックなので、特に編集の必要はないのですが念のため。「slideshow.livecode」を開くと、スクリーン全面にスタックが開かれます。下の図はメニューやスクリプト・エディターも開いています。スクリプト・エディターは「jpComments」からも開けるようにしています。
「jpComments」の下半分で、最上部にあるスタックのスクリプトを、Base64から日本語に変換して見る事ができます。
hide menubar
show this stack
で、フルスクリーンのスタックに戻す事ができます。
スライドショー・スタックのスクリプト全文
LiveCode7 注:
エラーを修正した「slideshow-LC7.livecode」のスクリプトを見てください。
ここに書いてあるのはLiveCode 6で動くスクリプトです。
以下に日本語のコメントを付けたスクリプトを書きます。左右の字詰めの関係で、実際のスクリプトとは違う行替えの箇所があります。
--------------------- 「slideshow」スタック内のスクリプトここから -------------------
--// this stack was programmed by Kenji Kojima, index@kenjikojima.com //----
--j スタンドアロンにする前に必要な事柄を初期化します
command setStandalone
set the filename of image "slide" to empty
put empty into fld "description"
set the cText of image "slide" to empty
end setStandalone
--------------------- 「slideshow」スタック内のスクリプト終わり -------------------
スタンドアロンにするプロジェクトには、だいたいいつもコマンド「setStandalone」を作っておきます。フィールド内の文字や、ラジオ・ボタンのセットなどの初期化をするために、スタンドアロンのテストの前にメッセージ・ボックスから送ります。これは私のやり方ですから、また別な方法もあるでしょう。
--------------------- 「slideshow」カード内のスクリプトここから -------------------
--j スタックを開く前に、メニューバーを隠して、フルスクリー
--j ン、黒のバックグラウンドに。フルスクリーンにコントロー
--j ルのポジションを合わせる
on preOpenStack
hide menubar
set the fullscreen of stack "slideshow" to true
set the backgroundColor of this stack to 0,0,0
set the height of btn "goBack" to the height of this stack
set the height of btn "goNext" to the height of this stack
set the topLeft of btn "goBack" to 0,0
set the topRight of btn "goNext" to the width of this stack, 0
set the width of fld "description" to the width of this stack
set the bottomLeft of fld "description" to \
the bottomLeft of btn "goBack"
set the bottomRight of grp "SelectQuit" to \
item 1 of the bottomRight of this stack - 6, \
item 2 of the bottomRight of this stack - 8
--j ボタン「selectSlide」のメニューをイメージの
--j リストに
set the text of btn "selectSlide" to getImageFiles()
--j スライドショーの説明のテキストを外部ファイル「text
--j .txt」からゲットして、イメージ「slide」のカス
--j タム・プロパティ「cText」にセットする
get url ("binfile:text.txt")
if it <> empty then
set the cText of image "slide" to it
else
set the cText of image "slide" to empty
end if
showFirstImage
end preOpenStack
private command showFirstImage
put line 1 of getImageFiles() into tSlideName
setTheText 1
set the filename of image "slide" to tSlideName
setSlidesize
end showFirstImage
--j Macの開発環境とスタンドアロンの「filename」
--j の違いを修正するファンクション
private function theFolderPath
if the environment is "development" then
set the itemDel to "/"
return item 1 to -2 of the filename of this stack
else
put the fileName of this stack into tPath
set the itemDel to "/"
switch the platform
case "MacOS"
put item 1 to -5 of tPath into tResult
break
case "Win32"
put item 1 to -2 of tPath into tResult
break
end switch
return tResult
end if
end theFolderPath
function getImageFiles
put theFolderPath() & "/images" into tFolder
set the defaultFolder to tFolder
put the files into tFiles
--j フォルダー「images」内のJPEGファイル以外をフ
--j ィルターで取り除く
filter tFiles with "*.jpg"
return tFiles
end getImageFiles
--j 矢印キーが叩かれた時にスライドを変える
on arrowKey tKey
if tKey is "right" then
send mouseUp to btn "goNext"
else
if tKey is "left" then
send mouseUp to btn "goBack"
end if
end if
end arrowKey
--j スライド説明の文(日本語、英語)をフィールド「desc
--j ription」にセットする
command setTheText pLineNum
if the cText of image "slide" is not empty then
set the unicodeText of fld "description" to \
uniencode(line pLineNum of the cText of image "slide", utf8)
end if
end setTheText
--j 左右に配置した「goNext」「goBack」
command goBackNext
put the filename of image "slide" into slideName
--j イメージのファイルネームから、説明テキストの何行目かを
--j 「tImageNum」に入れる
put lineOffset(slideName, the text of btn "selectSlide") \
into tImageNum
if word 2 of the target is quote& "goNext" "e then
if tImageNum >= the num of lines of getImageFiles() then
--j 始めに戻る
put line 1 of getImageFiles() into tSlideName
setTheText 1 --//fld "description" //---
else
put line tImageNum +1 of getImageFiles() into tSlideName
setTheText tImageNum +1 --//fld "description" //---
end if
else
if tImageNum is 1 then
--j 現在始めのイメージを見せているので、goBackで最後
--j のイメージにする
put line -1 of getImageFiles() into tSlideName
setTheText the num of lines of the cText of image "slide"
--//fld "description" //---
else
put line tImageNum -1 of getImageFiles() into tSlideName
setTheText tImageNum -1 --//fld "description" //---
end if
end if
set the filename of image "slide" to tSlideName
setSlidesize
end goBackNext
--j イメージをセットして、説明文をフィールド「descri
--j ption」にセット
command selectImageName pItemName
set the filename of image "slide" to pItemName
put lineOffset(pItemName, getImageFiles() ) into tLineNum
set the unicodeText of fld "description" to \
uniencode(line tLineNum of the cText of image "slide", utf8)
setSlidesize
end selectImageName
--j イメージを左右又は天地の最大サイズにセット
private command setSlidesize
put the formattedwidth of image "slide" into tFormatWidth
put the formattedHeight of image "slide" into tFormatHeight
put the width of this stack into tStackWidth
put the height of this stack into tStackHeight
if tFormatHeight >= tFormatWidth then
set the height of image "slide" to tStackHeight
set the width of image "slide" to tFormatWidth * \
tStackHeight div tFormatHeight
else
put tStackWidth - 2 * the width of btn "goNext" into tSlideWidth
set the width of image "slide" to tSlideWidth
set the height of image "slide" to tFormatHeight * \
tSlideWidth div tFormatWidth
end if
set the loc of image "slide" to the loc of this stack
end setSlidesize
--------------------- 「slideshow」カード内のスクリプト終わり -------------------
---------------------「slideshow」ボタン「goNext」スクリプトここから -----------------
on mouseUp
goBackNext
end mouseUp
--------------------- 「slideshow」ボタン「goNext」スクリプト終わり -------------------
---------------------「slideshow」ボタン「goBack」スクリプトここから-------------------
on mouseUp
goBackNext
end mouseUp
--------------------- 「slideshow」ボタン「goBack」スクリプト終わり -------------------
--------------------「slideshow」ボタン「selectSlide」スクリプトここから -----------------
on menuPick pItemName
selectImagename pItemName
end menuPick
---------------------「slideshow」ボタン「selectSlide」スクリプト終わり ------------------
--------------------「slideshow」ボタン「Quit」スクリプトここから -----------------
on mouseUp
quit
end mouseUp
---------------------「slideshow」ボタン「Quit」スクリプト終わり ------------------
3D ワイヤーフレーム ドローイング
最後にアニメーション・エンジンを使ったスタックを紹介します。私のプロジェクトの「RGB MusicLab」と言うアプリケーションのサブスタックの1つです。始めにアニメーション・エンジンを開いておかないと、エラーになります。アニメーション・エンジンは「13章:マルチメディア1」で説明しています。まだ持っていなかったら、ダウンロードは
このアドレスからできます。サイトに行ってアニメーション・エンジンのライセンスを読んで、「animationEngine5.0.2.zip」をダウンロードしてください。
アニメーション・エンジンを開いたら、「Use me!」をチェックにします。それからメッセージ・ボックスで
go stack url "http://kenjikojima.com/livecode/download/draw3D.livecode"
を、送ってください。
この章で新しく出て来た言葉
revBrowserOpen ファンクション(function)レブ・ブラウザーをオープンして初期化する
put revBrowserOpen(tWinID,tUrl) into lBrowserId