プロが教える店舗&オフィスのセキュリティ対策術

FLASH MX アクションスクリプトでノーマルモードでボタンをDOWNしたらアニメーションが再生されるようにしたいのですが、ボタンをDOWNに
押しっぱなしにしないとアニメーションが最後まで再生されません。
ボタンのDOWNを1回押したらすべてが再生されるようになるにはどうしたらよいですか? 教えてくださいm(_ _)m

A 回答 (1件)

イミフメイです。



とりあえずこちらの,
2ページを参考にしてみてください↓。

「stop();とplay();を覚えよう。」
http://www.1art.jp/flash/le/lesson13/lesson13.htm

「onイベントハンドラ」
http://www.1art.jp/flash/le/lesson16/lesson16.htm



普通はボタンに,
---------------------
// マウスダウンしたときしたときにplay();
on (press) {
play();
}
---------------------

もしくは,
---------------------
// クリックしたときにplay();
on (release) {
play();
}
---------------------

で動き続けるものです。
上記 // は注釈行(コメントアウト)です。
ActionScript 中にあってもなくても実行では無視されます。

play() は,ムービークリップクラスの(ムービークリップを対象オブジェクトとした)メソッドですから,
実際は,

 MovieClip.play();

となり,上の場合,
---------------------
// マウスダウンしたときしたときにplay();
on (press) {
this.play();
}
---------------------

---------------------
// マウスダウンしたときしたときにplay();
on (press) {
_root.play();
}
---------------------
と同じ意味になります。
これらの省略形と思ってくだされば良いです。




> 押しっぱなしにしないとアニメーションが
> 最後まで再生されません。

いったいどんな複雑なことをされているのでしょうか?
Flash は,基本的に何も書かないと,勝手にアニメーションする(次のフレーム次のフレームへと進む)仕様になっています。
押しっぱなしにしないとアニメーションが最後まで再生されないようにするというのは,
けっこう難しいことなのですよ。

例えば,上の1つめの頁のように,
複数フレーム用意しておいて,

フレーム1 に,
-------------------
// とりあえず止まれ
stop();
// 変数 flag の値を 0 にする
flag = 0;

// 以下 1フレーム進む時間ごとに毎回実行
this.onEnterFrame = function() {
// 変数 flag の値が 0 であれば
if (flag == 0) {
// やっぱり止まれ
stop();
// 変数 flag の値が 1 であれば
} else if (flag == 1) {
// このときだけ次のフレームへ
nextFrame();
}
};
-------------------

というスクリプトを用意して置いて,

ボタンには,
-------------------
// ボタンを押したら flag を 1 にする
on (press) {
_root.flag = 1;
}

// ボタンを離したら flag を 0 にする
on (release, dragOut) {
_root.flag = 0;
}
-------------------

というようなことを書けば(コピペすれば),
ボタンを押しているときだけにしかアニメーションは再生されません。

しかし,これが書けるくらいの人でしたら,
DOWNを1回押したらすべてが再生されるようになるなんてことは,
普通の場合,楽々簡単です。



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

とにかく,
かなり普通ではないことをされているようですね。
それに,上で最初に書いた

-----------------------
// クリックしたときにplay();
on (release) {
play();
}
-----------------------
のようなことは,
ムービークリップクラスとか小難しいことは抜きで,
Flash を初めて,普通は3日目くらいまでにはわかることです。

その前提もなく,いきなり妙なご質問をされるということは,
どこかにあった FLA サンプルなどを触って,
作りかえようとされているのだろうと勝手に推測します。

もしこの推測が当たっていれば,
その FLA サンプルは使い物になりません。
すぐに,その作りかえ路線は変更することをお薦めします。
かなり Flash に達者な人でも,他の人が作成したような FLA ファイルは理解できないものです。
図説などがたくさんあって,一からちゃんと説明してあるようなFlash解説本を買って,
それにしたがって,一から作っていくのが早道です。
Flash MX の本も探せばまだあると思います。


また,
他の人が作った FLA であれば,
「ちゃんとどうなっているのか説明してください。」
という補足要求にも答えられないと思います。


もし,そうでない場合は,
この回答の ====== より上↑を理解した上で,
どういう状況で,どういう ActionScript を書いた場合,
> 押しっぱなしにしないとアニメーションが
> 最後まで再生されません。
という普通では考えられない怪奇現象が起きるのか,
補足をおねがいします。


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

ついでに…
ノーマルモード とか エキスパートモード とかは,どうでも良いことです。
そんなことは,こちらにも,ActionScript にも関係ありません。

ちなみに私は,
「秀丸エディタ」 というテキストエディタで上のスクリプトを書いて,
http://hide.maruo.co.jp/software/hidemaru.html
Flash MX に貼り付けて動作検証しました。
愛用の ATOK(ジャストシステムの日本語入力システム)に,
ActionScript を辞書登録していますから,
上に書いたスクリプトくらいは,
この回答を「秀丸エディタ」で書きながらすぐに書けるのです。

と,このことは事実ですが,
そんなことをここに書いても,質問者の方にはどうでも良い関係のないことでしょう。

何でしたら「メモ帳(Notepad)」でも良いと思いますし,
「SE|PY」 とかいう ActionScriptエディタでも,
http://www.sephiroth.it/python/sepy.php
「SASEditor」 とかいう ActionScriptエディタでも良いと思います。
http://kibinokuni.zdap.jp/sas_editor.html

ノーマルモード とか エキスパートモード とかは,
作る方が作りやすいように作れば良いだけです。
その辺は,好きなように作ってください。
    • good
    • 0
この回答へのお礼

大変 丁寧に教えてくださって 本当にアリガトウございましたm(_ _)m

お礼日時:2006/08/30 09:42

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