【AS3】getChildByNameを使ってインスタンスを操作

| | トラックバック(1)
今日作業中に結構大変だったのでメモ。

【追記 2010/5/13】以下の記事ですが、後で読み返してみて意味不明なので参考にしないで下さい。こちらの記事が参考になります。

外部からデータ(XML)を読み込んで、データの数だけ動的にインスタンスを生成した時、AS3では下記のように
インスタンスは操作できないみたいです。

for (var i = 0; i < XMLList.length; i++) {
	
	var my_Mc:MovieClip = new MC();
	container.addChild(my_Mc);
	my_Mc.name = "my_Mc" + i;
	my_Mc.addEventListener(MouseEvent.ROLL_OVER,rolled);	
	
}

function rolled(e:MouseEvent):void {
	for (var i = 0; i < XMLList.length; i++) {	
	if () {
		e.currentTarget.x = 50;
	} else {
		container["my_Mc" + i].x = 0;
		}					
	}
}


そこで、下記のようにgetChildByNameを使ってムービークリップにキャストします。

for (var i = 0; i < XMLList.length; i++) {
	
	var my_Mc:MovieClip = new MC();
	container.addChild(my_Mc);
	my_Mc.name = "my_Mc" + i;
	my_Mc.addEventListener(MouseEvent.ROLL_OVER,rolled);	
	var target_mc:MovieClip = container.getChildByName("myName");
}

function rolled(e:MouseEvent):void {
	for (var i = 0; i < XMLList.length; i++) {	
	if () {
		e.currentTarget.x = 50;
	} else {
		target_mc.x = 0;
		}					
	}
}

これで操作可能になります。
ただこれだとcurrentTarget以外を操作したい場合に上手く指定できませんでした

なので下記のように設定することで解決しました。

var target_mc:MovieClip
				
for (var i = 0; i < XMLList.length; i++) {
	
	var my_Mc:MovieClip = new MC();
	container.addChild(my_Mc);
	my_Mc.name = "my_Mc" + i;
	my_Mc.addEventListener(MouseEvent.ROLL_OVER,rolled);	
	this[target_mc+i] = container.getChildByName("myName");
	
}

function rolled(e:MouseEvent):void {
	for (var i = 0; i < XMLList.length; i++) {	
	if () {
		e.currentTarget.x = 50;
	} else {
		this[target_mc + i].x = 0;
		}					
	}
}

トラックバック(1)

このブログ記事を参照しているブログ一覧: 【AS3】getChildByNameを使ってインスタンスを操作

このブログ記事に対するトラックバックURL: http://alwaysfinetuning.com/mt/mt-tb.cgi/61

» [actionscript] Re: getChildByNameを使ってインスタンスを操作(ynakajimaの備忘録)~のトラックバック

getChildByNameを使ってインスタンスを操作へのコメントが書けなかったので、トラックバック。 こんなのどうでしょうか? もっとスマートにできそ... 続きを読む

このブログ記事について

このページは、が2008年11月20日 16:25に書いたブログ記事です。

ひとつ前のブログ記事は「【AS3】Loaderをunloadではまった。」です。

次のブログ記事は「【OS】Vista,FirefoxでFlashが表示されない」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。