アプリ版:「スタンプのみでお礼する」機能のリリースについて

今、下記のようなコードでシーン移動を行っています。

******************************************************************************

stop();

stage.addEventListener(KeyboardEvent.KEY_DOWN, fl_KeyboardDownHandler_033);
function fl_KeyboardDownHandler_033(event:KeyboardEvent):void
{
MovieClip(this.root).gotoAndPlay("P33end", "P33");
stage.removeEventListener(KeyboardEvent.KEY_DOWN, fl_KeyboardDownHandler_033);
}

******************************************************************************

これに加えて、
「Shiftキー」を押すことで、ひとつ前のシーンに戻る機能を追加したいのですが
どのように記述すべきでしょうか。
ご教示いただければ幸いです。

A 回答 (1件)

「ひとつ前のシーン」の件は少しややこしい(色々な場合がある)のでとりあえず置いておいて


「Shiftキー」を押すことで シーン「P33」のフレーム「P33end」に移動するスクリプトを書きます。

リスナー関数の仮引数(ご質問のスクリプトの場合は「event」)には
発生したキーボードイベントオブジェクトの参照が入ります。
そのキーボードイベントのkeyCodeプロパティを調べると
そのキーボードイベントを発生させたキーコードがわかります。
『もしそのキーコードが「SHIFT」キーであれば…』というif文を付け加えれば良いので
次のようになります↓。

//**************************************
stop ();

stage.addEventListener (KeyboardEvent.KEY_DOWN, fl_KeyboardDownHandler_033);
function fl_KeyboardDownHandler_033 (event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.SHIFT)
{
MovieClip(this.root).gotoAndPlay ("P33end", "P33");
stage.removeEventListener (KeyboardEvent.KEY_DOWN, fl_KeyboardDownHandler_033);
}
}
//**************************************



Keyboard.SHIFT は Keyboardクラスの定数です。

このような書き方を知らなくても(ヘルプなどで調べなくても)別にかまいません。

fl_KeyboardDownHandler_033 内に
trace(event.keyCode);
などと書いて「制御」→「ムービープレビュー」すれば
キーコード(コード番号)得られます。

「SHIFT」キーのキーコードは 16 です。

ですから上のコードの if文 の部分を次のように変えても良いです。

if (event.keyCode == 16)



=========================

さて「ひとつ前のシーン」です。

上のスクリプトを原型にして
関数名だけを変えて「ひとつ前のシーン」に移動する場合は次のようになります。

//**************************************
stop ();

stage.addEventListener (KeyboardEvent.KEY_DOWN, fl_KeyboardDownHandler_034);
function fl_KeyboardDownHandler_034 (event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.SHIFT)
{
MovieClip(this.root).prevScene();
stage.removeEventListener (KeyboardEvent.KEY_DOWN, fl_KeyboardDownHandler_034);
}
}
//**************************************



この prevScene() ですが
これは gotoAndStop(○○) と同じで
そのシーンの先頭フレームで止まります。

gotoAndPlay(○○) と同じように
シーンの先頭フレームから再生を開始させたい場合は
MovieClip(this.root).prevScene();
の後に
MovieClip(this.root).play();
と書く必要があります。

ただし
この MovieClip(this.root).play(); を付け加えて動作するのは
Flash Player 10 以上(要 Flash CS4 以上)のみの場合があります。
この辺は場合(その他の条件)によって変わるので実際にやってみないと何とも言えません。
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ございません。
ご丁寧にソースを記載していただきありがとうございました!
無事、アクションを設定することが出来ました。感謝です!

お礼日時:2011/12/30 10:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!