図で見てわかるToolkit for CreateJS:その3

ボタンを押して何かをするスクリプト

ボタンを押して何かをさせるには、
ボタンとなる部品と、ボタンとなるスクリプトを追加して作ります。

testB

ここではサンプルとして、ボタンを追加して「シンボル名(btnA)、インスタンス名(btn1)」、フレーム1にフレームスクリプトを記述します。

JavaScriptは、フレームスクリプトの「/* js 〜  */」に書く。

Toolkit for CreateJSでは、HTML5書き出しをするとActionScriptは削除されてしまいます。

ですが、「/* js 〜  */」というコメントの中にJavaScriptを書いておくと、そのフレームが再生されるときにそのJavaScriptが実行されるのです。

つまり、フレームスクリプトにActionScriptと同じことをするJavaScriptを書くことで、同じプログラムを書くことができるのです。

ただし、ActionScriptとCreateJSの違いがあるため、少し書き方が違うところもありますので、少し注意が必要です。

jsでメインのタイムラインを止めるには

this.stop();

jsでボタンを押したらメインのタイムラインを再生するには

 this.btn1.onClick = function(e) {
        this.parent.gotoAndPlay(1);
 }
  1. jsでは、thisは必ずつけます。ActionScriptで必要ではありませんでしたが、どちらもthis.stop();のようにつけておくと、うっかりつけ忘れることが少なくなります。
  2. thisは、メインタイムラインのフレーム内では、ActionScriptもCreateJSもメインのタイムラインのことを差します。
  3. 「ボタンを押して何かをするとき」は、ActionScriptは「this.btn1.AddEventListener」を使いますが、CreateJSでは「this.btn1.onClick = function(){ }」を使って指定します。
  4. thisは、ボタンを押して何かをするときの関数の中では、ActionScriptはメインのタイムラインを差しますが、CreateJSでは「ボタンの中」を差します。ですから、「ボタンを押してメインのタイムラインを動かす」ときは、その1つ上を指す「this.parent」を使います。
  5. フレーム番号は、ActionScriptでは1フレーム目から始まりますが、CreateJSでは0フレーム目からはじまります。ですのでJSで指定するときは1つ少ない数で指定します。

 

フレーム1に書くフレームスクリプト

testBscript

testB

testB

htmlファイルでは、canvas要素でFlashのステージを用意

htmlファイルは、ステージの用意なので、その2と同じです。

自動で書き出されるhtmlファイル

testBhtml

jsファイルでは、Flashで作ったライブラリパーツの準備と、ステージ上への配置と、フレームスクリプト

Flashのフレームスクリプトの「/* js 〜  */」というコメントの中に書いたプログラムは、ここに書き出されます。

「this.frame_0 = function」というのは、Flashの1フレーム目で実行されるときのプログラムということを表しています。

自動で書き出されるjsファイル

testB.js