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で動作すること。
---------------------------------------------------------------
他に不足している点があれば、回答させていただきます。
以上、よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
this.markRed01_mc.hit.onPress = function() { … };
というスクリプトを書いた場合,
その { … } 内で使われる this は markRed01_mc.hit になります。
スクリプトを書いた階層
└markRed01_mc
└hit ←これが this
hit の親のタイムラインを play() させたいわけですから,
eval((targetPath(this).substring(0, 20))).play();
↓変更↓
this._parent.play();
でうまく行くと思いますよ(検証はしていませんが)。
なお,この場合,
_parent.play();
と書くのと,
this._parent.play();
とでは意味が違います。
_parent.play();
では,スクリプトを書いた階層の親階層が play() されます(そんな階層があれば)。
this._parent.play();
では,hit の親階層が play() されます。
ご丁寧な回答ありがとうございます。
ご指摘の通り、this._parent.play();でなく、_parent.play();でプログラムを組んでいた経緯で、フクザツなプログラムになってしまっていたようです。
おかげさまでうまくいきました、ありがとうございます。
No.3
- 回答日時:
#1です。
再生させるのはhitではなくその上の階層のMCなのですね。すみません、勘違いしていました。
でしたら、#2の方の記述通り、thisの部分をすべてthis._parentに置き換えてください。
No.1
- 回答日時:
どこまで「スマート」さを求めるかにもよりますが、パス指定をシンプルにしたい、ということでしたらeval部分をthisに置き換えればいいのではないでしょうか?
______________________________________________________
for (var i = 1; i<=6; i++) {
this["markRed0"+i+"_mc"].hit.onPress = function() {
this.play();
};
this["markBlue0"+i+"_mc"].hit.onPress = function() {
this.play();
};
this["markGreen0"+i+"_mc"].hit.onPress = function() {
this.play();
};
}
______________________________________________________
全く同じ命令文(hitをplayさせる)を繰り返し記述しているため、この記述も完全にスマートは言えませんが、クラスを使用しない記述であれば気にならないかな、というレベルです。
一番シンプルに済むのはすべてのhitのMovieClipを共通にして、hitのフレームに直接書くことです。上記の命令だけであれば3行だけで済むはずです。
□MC[hit]に記述
______________________________________________________
this.onPress = function() {
this.play();
};
______________________________________________________
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- スピーカー・コンポ・ステレオ MCカートリッジのオススメを教えてください。 お時間割いてくださりありがとうございます。 当方、現在 10 2022/07/04 14:20
- BTOパソコン https://www.youtube.com/watch?v=8h8EVXotOwQ&t=14s 2 2022/12/23 02:25
- 工学 材料力学(構造力学?)についての問題です。 写真のような形で部材CDの内力を考えます。 C点からの距 1 2022/11/22 00:41
- 物理学 相対性理論のエネルギーについて 3 2023/02/10 15:59
- アイドル・グラビアアイドル 嵐の中でも櫻井翔がMC向き扱いだったけど。 むしろ バラエティやらみていて 爺ちゃん ばあちゃん 国 2 2022/12/03 19:49
- 情報・ワイドショー タレントMC 5 2023/06/23 06:44
- 宇宙科学・天文学・天気 AIが答えた方程式 1 2023/02/20 00:12
- その他(ビジネス・キャリア) 海外から請求書がきたのですがPC/MCの意味がわからないのとそこの数字があってるのかわからなくて海外 2 2022/11/08 11:32
- バラエティ・お笑い リニューアルされた「新婚さんいらっしゃい!」 3 2022/04/03 18:55
- 物理学 『四次元温度』 2 2022/05/09 11:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで改行の入ったデータの正規...
-
コモンダイアログのshowopenに...
-
テキストボックスの中身をリセ...
-
ダブルクリックと2回クリックの...
-
変数に256文字以上のテキストを...
-
python ボタンを押すと複数の関...
-
VS2008 C# ボタンのテキストを...
-
pythonの画像の貼り付けについて
-
斜めに移動
-
Pythonのtkinterについて
-
arduino プログラムについて
-
VBScriptでMsgBoxのYesNoボック...
-
別のアプリケーションのテキス...
-
プログラミング、アーキテクチ...
-
YOASOBI
-
ドラッグ&ドロップからの取得
-
else if文の順序を変えることに...
-
テキスト内の重複文字検索
-
ダミーウインドウ
-
pythonのグローバル変数
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで改行の入ったデータの正規...
-
VBAユーザーホームテキストボッ...
-
外部SWFファイルを再生バーでコ...
-
縦横比率のを変えずに画像のサ...
-
テキストファイルから読み込ん...
-
自由線とレイヤー画面との位置関係
-
ピクチャーコントロールのデバ...
-
四角形の端っこをドラッグした...
-
AS3でうまく動作しません
-
看護師です。体温表のマクロを...
-
AS3.0 でフェードイン、
-
ステージの背景画像のみ拡大縮...
-
AS3 mc0~5をまとめて処理する
-
AS3.0でマウスボタンの状態を調...
-
AS3.0 設置した画像を次のラベ...
-
外部より取り込んだ.swfのサイ...
-
spriteで直線を引いたときに線...
-
xmlから作ったサムネールを移動...
-
Flash マウスの位置で速さの変...
-
flash ブラウザのサイズに合わ...
おすすめ情報