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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     任意のMovieClipの生成
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
flashlite
Åê¹ÆNo.38296
投稿日時: 2008-4-2 1:46
常連
居住地: 東京
投稿: 69
使用環境:
WinXP Win7
Flash CS3,Flash CS5.0

FlashPlayer
FlashLite 1.1、2.0、2.1、3.1(下記)
Docomo SO903i
SH-08A
SoftBank 911T
 922SH
945SHG
au W61SA
S004
Disney DM001SH
Willcom Windows Mobile
 WX341k
任意のMovieClipの生成
ユーザに複数のボタンを提供し、
クリックしたらムービークリップを生成し、表示させたいと思ってます。

その時、たとえば"1"のボタンを押したらa1というラベル名で
リンケージに用意したb1を生成したいのですが

var a1:b1 = new b1();

ボタンがたくさんあるので
これをActionScriptで変数"X"ボタンをクリックで
axというラベル名でbxのMovieClipを生成するようにするには、どう記述すればよろしいでしょうか?

右も左もわからない状態です。よろしくお願いします。


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

野中文雄
Åê¹ÆNo.38297
投稿日時: 2008-4-2 1:59
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 任意のMovieClipの生成
クラスを文字列で参照したい」をお読みください。
引用:
flashliteさんは書きました:
var a1:b1 = new b1();

ボタンがたくさんあるので
これをActionScriptで変数"X"ボタンをクリックで
axというラベル名でbxのMovieClipを生成するようにするには、どう記述すればよろしいでしょうか?


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

flashlite
Åê¹ÆNo.38309
投稿日時: 2008-4-4 2:25
常連
居住地: 東京
投稿: 69
使用環境:
WinXP Win7
Flash CS3,Flash CS5.0

FlashPlayer
FlashLite 1.1、2.0、2.1、3.1(下記)
Docomo SO903i
SH-08A
SoftBank 911T
 922SH
945SHG
au W61SA
S004
Disney DM001SH
Willcom Windows Mobile
 WX341k
Re: 任意のMovieClipの生成
ありがとうございます。

参考ページを参照し、1から自分で試してみました。
おかげさまで、連番で設定したクラスを
まとめて呼び出すことができました。

これで右辺側は解決したのですが、力不足で
左辺側のMovieClipのインスタンス名を連番でつけて作っていく方法が、まだわかりません。

下記のサンプルでnewの直後にmyInstance.nameで設定すればよいのでしょうか?


for (var i:int = 0; i<3; i++) {
  var name_str:String = "Pen"+i;
  var myClass:Class = Class(getDefinitionByName(name_str));
  var myInstance:MovieClip = new myClass();
  addChild(myInstance);
  trace(myInstance.name);


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

野中文雄
Åê¹ÆNo.38310
投稿日時: 2008-4-4 3:24
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 任意のMovieClipの生成
実際に試してみれば、おわかりになりませんか?
var myInstance:MovieClip = new MovieClip();
myInstance.name = "anyName";
trace(myInstance.name);

DisplayObject.nameプロパティ
引用:
flashliteさんは書きました:
これで右辺側は解決したのですが、力不足で
左辺側のMovieClipのインスタンス名を連番でつけて作っていく方法が、まだわかりません。

下記のサンプルでnewの直後にmyInstance.nameで設定すればよいのでしょうか?


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

flashlite
Åê¹ÆNo.38336
投稿日時: 2008-4-6 22:51
常連
居住地: 東京
投稿: 69
使用環境:
WinXP Win7
Flash CS3,Flash CS5.0

FlashPlayer
FlashLite 1.1、2.0、2.1、3.1(下記)
Docomo SO903i
SH-08A
SoftBank 911T
 922SH
945SHG
au W61SA
S004
Disney DM001SH
Willcom Windows Mobile
 WX341k
Re: 任意のMovieClipの生成

ありがとうございます。
実際に試して、名前を付けれたことを確認しました。

本来はそのMovieClipに個別に命令を出したかったのですが
hoge1.y=20;
などと記述すると未定義のプロパティというエラーになってしまうのでどうしたものかと、、


任意に複数のMovieClipを作って、後でそのMovieClipに個別にアクセスするというのは一般的な用途かと思い、本屋やWeb上を巡ったのですが、調べるのに時間がかかってようやく、

左辺(作ったMovieClip)にも
getChildByname();
で希望通りにアクセスすることができました。
(これが適切な方法かわかりませんが)

投稿する前に、よく調べようと思って苦戦し、
返信が遅れてしまいました。
 貴重なアドバイスありがとうございました。


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

野中文雄
Åê¹ÆNo.38349
投稿日時: 2008-4-7 20:26
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 任意のMovieClipの生成
インスタンスを作成した処理とは別のスクリプトで、名前からインスタンスを参照したい場合には、DisplayObjectContainer.getChildByname()メソッドを使われたのでよいと思います。

インスタンスの生成と一連の処理であれば、配列やObjectインスタンスに格納しておく方法も考えられます。
var oInstances:Object = new Object();
var myInstance:MovieClip = new MovieClip();
oInstances["hoge1"] = myInstance;
// ...[中略]...
oInstances.hoge1.y=20;

引用:
flashliteさんは書きました:
左辺(作ったMovieClip)にも
getChildByname();
で希望通りにアクセスすることができました。
(これが適切な方法かわかりませんが)


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

flashlite
Åê¹ÆNo.38351
投稿日時: 2008-4-8 3:52
常連
居住地: 東京
投稿: 69
使用環境:
WinXP Win7
Flash CS3,Flash CS5.0

FlashPlayer
FlashLite 1.1、2.0、2.1、3.1(下記)
Docomo SO903i
SH-08A
SoftBank 911T
 922SH
945SHG
au W61SA
S004
Disney DM001SH
Willcom Windows Mobile
 WX341k
Re: 任意のMovieClipの生成
Objectインスタンスを作って格納する方法も勉強したいと思います。

一応解決したので、そのコードを載せておきます。
 
クラスを文字列で参照したいを参考にさせて頂いてます。
//クラスも任意で複数MovieClipつくる
for (var i:int = 0; i<3; i++) {
  var name_str:String = "Pen"+i;
  var myClass:Class = Class(getDefinitionByName(name_str));
  var myInstance:MovieClip = new myClass();
  addChild(myInstance); 
myInstance.name = "hoge"+i;
} 

//MovieClipを作成した後から個別にアクセス
for (var j:int = 0; j<3; j++) {
	getChildByName("hoge"+j).x=j*50;//まとめて
	getChildByName("hoge1").y +=50;//1個だけでも
}


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

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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