■六年生一学期■

 Rフレームアクションは、スクリプトが置かれたフレームを通過したときにコマンドが下されました。
六年生で学習するボタンアクションはボタンを操作したときにコマンドを下します。

 ボタンアクションは、on()ハンドラと呼ばれ、

on(イベント){指示式}

というスタイルで記述します。
この場合のイベントとはボタンの操作方法です。

 実際にやって見ましょう。
 hensu.pflを開いてください。

 ファイルリストに「●←ここを連打」というテキスト(ID0015)を作り、ラベル「カウント」の直後に追加します。


 「ボタンにする」にチェックを入れ、「アクションの設定」のプルダウンメニューから<スクリプト>を選択します。

 次に、その下の「アクション スクリプト」のエディタに書いてあることをすべてコピーします。
そうしたら、その「アクション スクリプト」は削除してしまってください。

 コピーしたスクリプトを、テキスト0015のスクリプトエディタにペーストし、赤い矢印の行を書き加えます。


 つまり、Rフレームアクションに書いていたことを指示式として、on(操作){指示式}に放り込んだわけです。

 フレーム51の「ラベル『カウント』へジャンプ」は必要ないので、「アクション 停止」に変更します。

 ここまでのイベントリストは↓のようになっています。


 プレビューしてみると、自動でカウントしていたのが、 手動でボタンを押すことによってカウントするように変わっていることが判ります。


 イベントにはpressの他に↓のようなものがあります。

イベントボタンとマウス&カーソルとの関係
pressそのボタンの上で、左クリックが押されたとき
releaseそのボタンの上で、左クリックが離されたとき
rollOverそのボタンの上に、カーソルが載ったとき
rolloutそのボタンの上から、カーソルが外れたとき

 実用的なのはこの四つですが、操作する人のクリックするときの癖でコマンドが下されないというトラブルを防ぐために
次の三つを使う場合があります。

イベントボタンとマウス&カーソルとの関係
releaseOutsideそのボタンの上で左クリックが押され、そのボタン外で左クリックが離されたとき
dragOutそのボタンの上で左クリックを押したまま、カーソルがボタン領域外に出たとき
dragOverそのボタンの上で左クリックを押したまま、カーソルがボタン領域外に出て、再び領域に戻ったとき

 また、ゲームなどでボタンに設定した画像が動き回る場合、しかたなく↑のような操作になってしまう場合もあるので、
ボタンによる判定に不満がある場合は、併記してみると思い通りの判定になることがあるので試してみましょう。

 イベントを併記するときはカンマを挟みます。

例:on(release,releaseOutside){指示式}

 releaseには通常↑のようreleaseOutsideを併記して書くと、せっかちな人対策になります。
なぜならreleaseは、そのボタン上で左クリックが離された場合のみだからです。


 イベントリストのテキスト0006の「ボタンにする」のアクションを↓のように、「スクリプト」に変更します。


 スクリプトエディタには↓のように記入します。

on(rollOver){this._alpha=30;}
-
on(rollOut){this._alpha=100;}
-
on(press){this.gotoAndPlay("ようこそ");}


 on()ハンドラを連記する場合は、間に「-」を挟みます。
これもよく間違えるところですので、注意が必要です。

 プレビューすると、青い▲にカーソルを載せると、_rootに置かれた画像が透過されます。
青い▲だけではなく「おみくじ」というテキストも透過されることを確認してください。
(デバイスフォントを使ったテキストの場合は透過されません)

 ボタンアクションの場合は、thisはボタンに使われた画像そのものを指すことはなく、
後ろにメソッドが続いた場合は、ルートのタイムライン、
プロパティが続いた場合は、ルートのタイムラインに置かれたすべてを指します。
 つまりthisは常にイコール_rootになるわけです。
 試しにプレビューで、青い▲をクリックすると、そのあとも_rootは透過され続けています。


 これを解消するにはon(press)の指示式にthis._alpha=100;を書き加えなければなりません。


 スクリプトエディタでは、半角スペース・タブ・改行は無視されますから、 前述した記述ルールに縛られずに、自分が見やすいように書いて構いません。
 プレビューしてみましょう。


◎プロジェクトファイルsample61.pfl

 一学期はこれで終了です。

六年生二学期へ

TOPへ

inserted by FC2 system