Flashでmc.onPress = function() を使ったスクリプトでわからない所が・・・
FLASHのActionScriptで質問です。
今の赤・青・緑の3種類のムービークリップ(以下、MC)をそれぞれ6つ、
合わせて18つステージ上に配置し、それぞれに…
赤)markRed01_mc, markRed02_mc … markRed06_mc
青)markBlue01_mc, markBlue02_mc … markBlue06_mc
緑)markGreen01_mc, markGreen02_mc … markGreen06_mc
という、インスタンス名をつけています。
--画面の模式図------------------
┌───────────┐
│ │
│● ● ● ● ● ● │←赤の段
│ │
│● ● ● ● ● ● │←青の段
│ │
│● ● ● ● ● ● │←緑の段
│ │
└───────────┘
--------------------------------
これらのMC全てに対して「マウスを押した時」に消えるようにするため、
以下のscriptをタイムライン上に記述しました。
for (var i = 1; i<=6; i++) {
this["markRed0"+i+"_mc"].hit.onPress = function() {
eval((targetPath(this).substring(0, 20))).play();
};
this["markBlue0"+i+"_mc"].hit.onPress = function() {
eval((targetPath(this).substring(0, 21))).play();
};
this["markGreen0"+i+"_mc"].hit.onPress = function() {
eval((targetPath(this).substring(0, 22))).play();
};
}
[解説]
・MC内の当たり判定用のMC(インスタンス名:hit)に対し、
マウスを押した時にMCが再生(消えていくアニメーション)するようにしています。
・MC内では最初にthis.stop();させ、
押して再生された後に、
MC内の最終フレームに来た時に再びthis.stop();するようしています。
このとき、上記のscriptを実行させると“問題なく動きます”。
しかし、MCに対するplay();命令で、
「eval((targetPath(this).substring(0, 20))...」という
あまり「スマートでないやり方」になってしまっています。
そこで、これと同じように動作し、且つスマートに記述する方法があれば
教えていただきたく今回質問させていただきました。
なお、開発環境は以下の通りです。
---------------------------------------------------------------
システム:Microsoft Windows XP Professional Version2002 SP3
FLASH:macromedia FLASH Professional Ver8.0
※ただし、Flash Player 7で動作すること。
---------------------------------------------------------------
他に不足している点があれば、回答させていただきます。
以上、よろしくお願いいたします。
お礼
解決しました。度々親切なご説明ありがとうございます。 恥ずかしながらこの発想はなかったです。 自分の知ってる簡単なコードでも解決できたなんて…発想の転換は大切ですね。