メイン コーダーズルーム【スクリプト系】
[AS2.0]ダイナミックに生成したMCにイベントを割り当てる | 投稿するにはまず登録を |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | スレッド |
|---|---|
| admi-ky | Åê¹ÆNo.39307 投稿日時: 2008-6-26 11:07 |
新米 ![]() ![]() 居住地: 投稿: 11
使用環境:
Windows Vista Flash CS3 |
[AS2.0]ダイナミックに生成したMCにイベントを割り当てる はじめまして
ダイナミックに生成したMCにイベントを割り当てる際に不具合が生じて、困っています。 初めての投稿ですので、言葉足らずの部分があるかも知れないですが、どなたかご回答いただければ幸いです。 MCは入れ子構造にしています。子のほうにxmlを使って写真をロードしていて、親のほうにマウスイベントを割り当てているのですが、そのイベントを実行しようとすると、getURL()等は動くのですが、他のインスタンスのプロパティーにアクセスできません。 以下にスクリプトをコピペしますので、どこに問題があるか、指摘していただければ助かります。 よろしくお願いします。 /*XMLの読み込み*/ var photo_list:Array = new Array(); var _xml:XML = new XML(); _xml.ignoreWhite = true; _xml.onLoad = function(success) { nodes = this.firstChild.childNodes; for (var i = 0; i<nodes.length; i++) { photo_list.push({thum:nodes[i].attributes.thum, photo:nodes[i].attributes.photo}); } createMS(); setPhotos(); xCreateMC(); setThumb(); yMove(); }; _xml.load("photos.xml"); /*空のMCを作成*/ var mc_array:Array = new Array(); var mc_array2:Array = new Array(); var mc_array0:Array = new Array(); var mc_array02:Array = new Array(); var mW:Number = 200; var mH:Number = 150; var photo_num:Number = 50; var c:Number = 0; var r:Number = 0; function xCreateMC():Void { for (var i = 0; i<=photo_num; i++) { wrapper.createEmptyMovieClip("thumbSet_mc"+i,wrapper.getNextHighestDepth()); mc_array[i] = eval("wrapper.thumbSet_mc"+i); mc_array[i]._x = mW*r; mc_array[i]._y = mH*c; mc_array[i].createEmptyMovieClip("thumbSet_s_mc"+i,mc_array[i].getNextHighestDepth()); mc_array2[i] = eval("wrapper.thumbSet_mc"+i+".thumbSet_s_mc"+i); mc_array2[i]._alpha = 50; mc_array[i].onRelease = function() { _root.mc_array0[i]._visible = true; }; r++; if (r == 4) { r = 0; c++; } } } /*空のMCにサムネイルをセット*/ function setThumb():Void { for (var i = 0; i<photo_num; i++) { mc_array2[i].loadMovie(photo_list[i].thum); } } /*サムネイルを包むMCのwrapperをマウスで動かす*/ var centerY:Number = Stage.height/2; function yMove():Void { var minY:Number = mc_array[photo_num - (4*3)]._y * -1; var maxY:Number = 0; if ((wrapper._y<maxY) && (_root._ymouse<_root.centerY-50)) { wrapper._y += (centerY-_root._ymouse)/7; } else if ((wrapper._y>minY) && (_root._ymouse>_root.centerY+50)) { wrapper._y += (centerY-_root._ymouse)/7; } if (wrapper._y>maxY) { wrapper._y = maxY; } else if (wrapper._y<minY) { wrapper._y = minY; } } /*メインステージ作成*/ function createMS():Void { for (var i = 0; i<photo_num; i++) { _root.createEmptyMovieClip("main_stage"+i,this.getNextHighestDepth()); mc_array0[i] = eval("main_stage"+i); mc_array0[i].createEmptyMovieClip("main_stage_s"+i,this.getNextHighestDepth()); mc_array02[i] = eval("main_stage"+i+"main_stage_s"+i); } } function setPhotos():Void { for (var i = 0; i<=photo_num; i++) { mc_array02[i].loadMovie(photo_list[i].photo); mc_array0[i]._visible = false; } } |
| Tonpoo (gaienboy改め) | Åê¹ÆNo.39308 投稿日時: 2008-6-26 11:34 |
職人 ![]() ![]() 居住地: 東京・神宮前 投稿: 717
使用環境:
Windows 7 Professional, Flash CS5 Pro,Flash Player 10,1,102,64 |
Re: [AS2.0]ダイナミックに生成したMCにイベントを割り当てる gaienboyです。ざっとしか見ていませんが、気になったのはここですね。下記のようにすると、どのサムネイルをクリックしても同じ値がtraceされませんか?
iの値を別途記録して、それを呼び出すようにしましょう。
|
| ひろゆき | Åê¹ÆNo.39309 投稿日時: 2008-6-26 13:32 |
ちょんまげら ![]() ![]() 居住地: 東京砂漠 投稿: 4403
使用環境:
10.8.5 Flash Professional CS4/CS6/CCSafari 6.1 |
Re: [AS2.0]ダイナミックに生成したMCにイベントを割り当てる これらのスクリプトは、ご自分で記述されたものでしょうか?
もし、そうでないのであれば、投稿に関して 引用: 2. 市販の書籍や、Web上で公開されている作例などから、ソースコード・解説文などを、作者の許可無く転載・引用することは、権利者の利益を侵害する恐れがありますので、当フォーラムでは禁止します。
|
| admi-ky | Åê¹ÆNo.39311 投稿日時: 2008-6-26 14:32 |
新米 ![]() ![]() 居住地: 投稿: 11
使用環境:
Windows Vista Flash CS3 |
Re: [AS2.0]ダイナミックに生成したMCにイベントを割り当てる gaienboyさん
確かにすべて同じ値がtraceされました。 勉強になりました。 ありがとうございます。 ただ、 _root.mc_array0[this.idx]._visible = true; で、その子MCに読み込んであるイメージを表示する意図だったのですが、うまくいきませんでした。 何か思い当たること等ありましたら、どなたかご教授いただければ助かります。 よろしくお願いします。 |
| admi-ky | Åê¹ÆNo.39312 投稿日時: 2008-6-26 14:34 |
新米 ![]() ![]() 居住地: 投稿: 11
使用環境:
Windows Vista Flash CS3 |
Re: [AS2.0]ダイナミックに生成したMCにイベントを割り当てる 一部、WEB上にあったものを使っています。
申し訳ないです。 |
| 野中文雄 | Åê¹ÆNo.39314 投稿日時: 2008-6-26 14:49 |
ちょんまげら ![]() ![]() 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: [AS2.0]ダイナミックに生成したMCにイベントを割り当てる 「その子MCに読み込んであるイメージ」が参照されていますか?また、「うまくいきません」は、ご説明になりません。
引用: admi-kyさんは書きました: |
| admi-ky | Åê¹ÆNo.39315 投稿日時: 2008-6-26 15:03 |
新米 ![]() ![]() 居住地: 投稿: 11
使用環境:
Windows Vista Flash CS3 |
Re: [AS2.0]ダイナミックに生成したMCにイベントを割り当てる fumioさん
すいません。 説明不足でした。 あらかじめイメージを読み込むメソッドは以下です。 function setPhotos():Void { for (var i = 0; i<=photo_num; i++) { mc_array02[i].loadMovie(photo_list[i].photo); mc_array0[i]._visible = false; } } mc_array02[i]がmc_array0[i]の子になっていて、_visibleはtrueです。 以下のように書き換えてみたりもしたのですが、結果は同じでした。 function setPhotos():Void { for (var i = 0; i<photo_num; i++) { mc_array02[i].idx = i; mc_array02[this.idx].loadMovie(photo_list[i].photo); mc_array0[i]._visible = false; } } |
| Tonpoo (gaienboy改め) | Åê¹ÆNo.39316 投稿日時: 2008-6-26 15:30 |
職人 ![]() ![]() 居住地: 東京・神宮前 投稿: 717
使用環境:
Windows 7 Professional, Flash CS5 Pro,Flash Player 10,1,102,64 |
Re: [AS2.0]ダイナミックに生成したMCにイベントを割り当てる gaienboyです。
そもそもmc_array02[i]やphoto_list[i].photoは適切に参照できていますか?
|
| admi-ky | Åê¹ÆNo.39318 投稿日時: 2008-6-26 15:45 |
新米 ![]() ![]() 居住地: 投稿: 11
使用環境:
Windows Vista Flash CS3 |
Re: [AS2.0]ダイナミックに生成したMCにイベントを割り当てる gaienboyさん
mc_array02[i]をevalでインスタンスの参照にする際に、一箇所ミスを見つけ、そこを訂正すると動きました。 ご迷惑おかけしました。 ありがとうございます。 |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
| 投稿するにはまず登録を | |



ログイン




Windows 7 Professional,
Flash CS5 Pro,
Tonpoo (a.k.a. gaienboy)

10.8.5


