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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     addChildで作成した複数のムービークリップを別のメソッドから制御したい
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
KOINPOP
Åê¹ÆNo.34877
投稿日時: 2007-8-29 8:16
新米
居住地: 岐阜県
投稿: 16
使用環境:
WindowsXP HOME
FLASH CS3
addChildで作成した複数のムービークリップを別のメソッドから制御したい
はじめまして。
AS1.0からAS3.0に挑戦しています。
的はずれな疑問でしたら、申し訳ございません。

addChildで作成したムービークリップに対して、別のメソッドから一斉に指示がしたいのですが、
ムービークリップを作成する際に例えば mc.name="grid"+ID という感じでで名前をつけておいて、あとでそのnameを利用すれば良いと考えていたのですが
この考えが誤っているのか、何か他の部分が要因なのか、混乱してきてしまい
思い切って、質問させていただきました。


今回の件に関わるコードを抜粋しました。

public class map extends MovieClip {
//コンストラクタ
var gridSum:Number=0;

public function addGrid():void {
//グリッドを生成
for (j=0; j <= 38; j++) {
mc.y=j * 20;
mc.name="grid" + ID;
MovieClip(this).mapGrid_mc.addChild(mc);
gridSum++
}

public gridData():void{
//生成した各グリッドにアクセス
var ID:Number;
var tagetMc:String;
for (ID=0; ID<=gridSum; ID++) {
tagetMc="grid" + ID;
trace(MovieClip(this).mapGrid_mc[tagetMc].y)
}
}
}

あきらかにグリッドが生成された後に、gridData()を実行しても出力に
TypeError: Error #1010: 条件は未定義であり、プロパティがありません。
というエラーになってしまいます。


生成したグリッドから実行したtraceでは下記のように
trace(MovieClip(parent).name)//mapGrid_mc
であるのに、mapGrid_mcから、子である各グリッドにアクセスできないのが
どうしても疑問なのですが
そもそも考え方として、間違っている点があるのでしょうか?


お手数ですが、ご助言、よろしくお願い致します。
ニノミヤ カズノリ
Åê¹ÆNo.34880
投稿日時: 2007-8-29 9:46
職人
居住地: 東京
投稿: 430
使用環境:
CS4
.4.11, .5.7
XP Pro(sp3)
Flash Player 10,0,22,87,
AIR 1.5.1,
IE 5.5 & 6 & 7 & 8,
Firefox 2.0.0.20 & 3.0.11 & 3.5,
Opera 9.64,
Safari 4,
Google Chrome 2.0.172.31,
Netscape 7.1
Re: addChildで作成した複数のムービークリップを別のメソッドから制御したい
初めまして。ニノミヤと申します。
引用:
public class map extends MovieClip {
	//コンストラクタ
	var gridSum:Number=0;

	public function addGrid():void {
	//グリッドを生成
	for (j=0; j <= 38; j++) {
		mc.y=j * 20;
		mc.name="grid" + ID;
		MovieClip(this).mapGrid_mc.addChild(mc);
		gridSum++
	}

	public gridData():void{
	//生成した各グリッドにアクセス
		var ID:Number;
		var tagetMc:String;
		for (ID=0; ID<=gridSum; ID++) {
			tagetMc="grid" + ID;
			trace(MovieClip(this).mapGrid_mc[tagetMc].y)
		}			
	}
}

まず最初に、所々未定義の変数があるのですが実際のコードでは正しく宣言されているのでしょうか。
for文で使用されているjやmc等ですね。

では本題ですが、例えば
var test:MovieClip = new MovieClip();
mapGrid_mc.addChild(test);

mapGrid_mcに追加されたtestにアクセスしたいとします。
しかし、addChildはオブジェクトをそのまま追加する物ではありませんので、アクセス演算子によるアクセスはできません。

どうしてもアクセス演算子を使用したアクセスをしたいのであれば、下記の様にしてみてください。
mapGrid_mc["grid" + 0] = new MovieClip();
mapGrid_mc.addChild(mapGrid_mc["grid" + 0]);
trace(mapGrid_mc["grid" + 0]);
KOINPOP
Åê¹ÆNo.34887
投稿日時: 2007-8-29 23:56
新米
居住地: 岐阜県
投稿: 16
使用環境:
WindowsXP HOME
FLASH CS3
Re: addChildで作成した複数のムービークリップを別のメソッドから制御したい
ニノミヤさん、こんなに早くご返信いただき、どうもありがとうございます。

>所々未定義の変数があるのですが実際のコードでは正しく宣言されているのでしょうか。
ごめんなさい、余計なところを省いたつもりが、結局、穴がある転記になってしまいました。
ご察しくださり、ありがとうございます。


今、教えていただいたようにコードを変えてみたところ
うまくいきましたので、ご報告させていただきます。

いろいろ本などを見てみたのですが、自力でこの方法にたどり着くには
相当な時間がかかった思いますので本当に助かりました。
どうもありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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