トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     可変数のボタンに対するonReleaseの効率化
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
nacbox
Åê¹ÆNo.45931
投稿日時: 2010-9-24 18:54
新米
居住地: 東京
投稿: 25
使用環境:
Win7 / Flash CS4 PRO
可変数のボタンに対するonReleaseの効率化
AS2でコーディングしています。よろしくお願いします。

外部png画像をxml管理しており、それを読み込んで、attachMovieで画面内に配置します。それらの画像をクリックして、任意のURLへ飛ばそうとしています。

・画像の枚数は何枚になるか分かりません。
・URLは、それぞれ読み込んだ画像に対して、一対一です(xmlに記述されています)。


attachMovieしたMCのインスタンス名を
aMC0?aMCx
のように、[ "aMC" + 0から始まる連番 ] としています。

また、URLは、
mcArray[0].url?mcArray[x].url
のように配列で管理しています。

画像の枚数は [ mcNum ] という変数に代入しました。

さて、これらのMCをクリックした際にジャンプするように、以下のようなコードを組みました。

for (i=0; i<mcNum; i++) {
    _root["aMC" + i].onRelease = function() {
        getURL(mcArray[i].url);
    }
}


画像の枚数分だけ、for文でonReleaseを回すイメージです。

しかし、上記の書き方だと問題が発生します。
onRelease文自体はfor文とともに走るので、それぞれの画像MCが正常にマウスに反応するようになります。
しかし、onRelease文の中のgetURL文は、for文の処理時ではなく、クリック時に初めて走ることになります。
MCをクリックした際には、もうfor文は一周したあとなので、
i は mcNumと同じ数字になっています。
そのため、実際には、aMC0をクリックしようが、aMC100をクリックしようが、getURLは一番最後の画像のURLに飛んでしまいます。

画像の枚数が固定であれば、for文で回さずに、画像の枚数分だけonRelease文を書いてしまえばとりあえず問題は回避できるのですが、画像枚数が可変のため、平文で書くわけにはいきません。
できればfor文などで効率化したいと考えています。
しかし、上記の問題をクリアする方法が思いつきません。

私の知らないコマンドがある、とかいうよりも、おそらく考え方の問題だと思うのですが。
アドバイスをいただければ嬉しいです。

よろしくお願いします。
ひろゆき
Åê¹ÆNo.45932
投稿日時: 2010-9-24 19:07
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: 可変数のボタンに対するonReleaseの効率化
for (var i:Number= 0; i < mcNum; i++) {
	var btn:MovieClip = _root["aMc"+i];
	btn.id = i;
	btn.onRelease = function():Void {
		getURL(mcArray[this.id].url);
	};
}

for文とボタンアクション
Buttonのthis
forループでMovieClipに設定したイベントハンドラメソッドから変数を参照する


----------------
質問する際は、回答者に具体的な情報を与えてください。

nacbox
Åê¹ÆNo.45933
投稿日時: 2010-9-24 20:22
新米
居住地: 東京
投稿: 25
使用環境:
Win7 / Flash CS4 PRO
Re: 可変数のボタンに対するonReleaseの効率化
ありがとうございました!
そうか、MCと値をひもづけてやって、thisから引っ張り出せばよかったんですね。
思いつきませんでした……。

無事、問題を回避することが出来ました。
助かりましたm(_ _)m



過去ログで同じ話題がいくつもあったんですね。
失礼しました(汗)
探し方がへたくそでした。

今後ともよろしくお願いします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops