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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     [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されませんか?
for (var i = 0; i<=photo_num; i++) {
    (中略)
    mc_array[i].onRelease = function() {
        trace(i);
        _root.mc_array0[i]._visible = true;
    };
    (中略)
}

iの値を別途記録して、それを呼び出すようにしましょう。
for (var i = 0; i<=photo_num; i++) {
    (中略)
    mc_array[i].idx = i;
    mc_array[i].onRelease = function() {
        trace(this.idx);
        _root.mc_array0[this.idx]._visible = true;
    };
    (中略)
}



----------------
Tonpoo (a.k.a. gaienboy)
Tonpoo.com / TONPOOBLOG / twitter@tonpootwit

ひろゆき
Åê¹ÆNo.39309
投稿日時: 2008-6-26 13:32
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 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さんは書きました:
確かにすべて同じ値がtraceされました。
...[中略]...
ただ、
trace(_root.mc_array0[this.idx]);
_root.mc_array0[this.idx]._visible = true;

で、その子MCに読み込んであるイメージを表示する意図だったのですが、うまくいきませんでした。


----------------
 

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は適切に参照できていますか?

function setPhotos():Void {
    for (var i = 0; i<=photo_num; i++) {
        trace(mc_array02[i]+"/"+photo_list[i]+"/"+photo_list[i].photo);
        mc_array02[i].loadMovie(photo_list[i].photo);
        mc_array0[i]._visible = false;
    }
}


----------------
Tonpoo (a.k.a. gaienboy)
Tonpoo.com / TONPOOBLOG / twitter@tonpootwit

admi-ky
Åê¹ÆNo.39318
投稿日時: 2008-6-26 15:45
新米
居住地:
投稿: 11
使用環境:
Windows Vista
Flash CS3
Re: [AS2.0]ダイナミックに生成したMCにイベントを割り当てる
gaienboyさん

mc_array02[i]をevalでインスタンスの参照にする際に、一箇所ミスを見つけ、そこを訂正すると動きました。

ご迷惑おかけしました。

ありがとうございます。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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