0
コンボボックスコンポーネントを含むフラッシュcs5で作成された外部swfをロードするflash builder actionscript 3プロジェクトを作成しました。AS3 - ロードされたswfのコンボボックスへのアイテムの追加
どのように項目を動的に追加しますか?
mc1['itemList'].addItem({label:"test"});
は動作していませんか?
コンボボックスコンポーネントを含むフラッシュcs5で作成された外部swfをロードするflash builder actionscript 3プロジェクトを作成しました。AS3 - ロードされたswfのコンボボックスへのアイテムの追加
どのように項目を動的に追加しますか?
mc1['itemList'].addItem({label:"test"});
は動作していませんか?
あなたは、実行時にロードされたSWF内のインスタンスにアクセスしたい場合は、getChildByNameメソッドに
Object(MovieClip(__loader.content).getChildByName('itemList'))
を使用することができます私は、次のコードを使用してそれをテストし、それが正常に動作します。 2つのComboBoxを含む小さなFlash CS5ファイルを作成しました。 2つ目は、読み込まれたswf内で定義されたクラスをインスタンス化する方法を示すことです。例えば、クラスとFlash CS5ファイルへ
リンク http://public.goldsource.de/stackOverflow/ComboBoxTest.zip
package
{
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.net.URLRequest;
import flash.utils.describeType;
import flash.utils.getDefinitionByName;
public class ComboBoxTest extends Sprite
{
private var __loader:Loader = new Loader();
public function ComboBoxTest()
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
__loader.contentLoaderInfo.addEventListener(Event.COMPLETE,__onComplete);
/*
Within the ComboBoxContainer.swf you find ComboBox-Component named 'myComboBox'.
There is another ComboBox within a MovieClip that is exported as MyComboBoxClass. This is necessary if you
want to add more than one ComboBox without loading the swf again.
*/
__loader.load(new URLRequest('assets/ComboBoxContainer.swf'));
}
private function __onComplete($e:Event):void{
/* You can even access the ComboBox while within Loader.
this line adds a new item*/
Object(MovieClip(__loader.content).getChildByName('myComboBox')).addItem({label:"First Box"});
/*
I suggest to get rid of the loader. The addChild is not necessary to fetch a reference,
i used it to add the ComboBox to the stage. Because addChild returns the reference storing it is
possible within the same line.
*/
var importedComboBox:Object = addChild(MovieClip(__loader.content).getChildByName('myComboBox'));
importedComboBox.y = 20;
importedComboBox.x = 10;
importedComboBox.addItem({label:"Some Item"});
/*
By the way, you can also extract the class Definiton. So its possible to instantiate the ComboBox.
*/
var myComboBoxClass:Class = __loader.contentLoaderInfo.applicationDomain.getDefinition("MyComboBoxClass") as Class;
// You can instantiate this class multiple times
var mySecondComboBox:Object = addChild(new myComboBoxClass());
mySecondComboBox.y = 60;
mySecondComboBox.x = 10;
mySecondComboBox.getChildByName('comboBox').addItem({label:"Second Box"});
var myThirdComboBox:Object = addChild(new myComboBoxClass());
myThirdComboBox.y = 100;
myThirdComboBox.x = 10;
myThirdComboBox.getChildByName('comboBox').addItem({label:"Third Box"});
}
}
}