我有一个库项目:MovieClip
,里面有一个ComboBox
组件。该项目已分配一个类myMC
。
我想要实现的是来自主电影的电话,例如var mmc:myMC = new myMC( stage);
:
ComboBox
实例的值; 所以在myMC构造函数里面,我写了像:
public function myMc( theStage:flash.display.Stage) {
if( stage == null) this.addEventListener( Event.ADDED_TO_STAGE, init);
theStage.addChild( this);
}
public function init( e:Event = null) {
var Data:Array= new Array(
{'label1' : 'item1'},
{'label2' : 'item2'},
{'label3' : 'item3'}
);
cbox.dataProvider = new DataProvider( Data);
}
cbox
是myMC中ComboBox实例的名称。
ComboBox没有分配任何值。这是我的问题的简化示例,而实际案例涉及更多UI组件 - 所有这些组件都错过了它们的值。
调试器使用值显示正确类型的组件对象 - 但它们会从显示的舞台对象中丢失!
请解释一下,我做错了什么 - 以及为什么舞台上的实例与AS实例化的对象有某种不同?
答案 0 :(得分:0)
好吧,似乎是我的错误:错误的类型和杂乱的代码。
这是一个可行的例子。因此,也许这不是将对象放在舞台上由自己的构造函数进行的最佳实践,但这是有效的。 working example sources。
主文档有一个DocTest类:
package {
import flash.display.Sprite;
import libItem;
public class DocTest extends Sprite {
public function DocTest() {
var instance:libItem = new libItem( this);
}
}
}
库项目里面有一个ComboBox和一个文本字段,附加了以下类代码:
package {
import fl.data.DataProvider;
import flash.display.Sprite;
import flash.events.Event;
public class libItem extends Sprite{
public function libItem( theParent:flash.display.Sprite) {
if( stage == null) this.addEventListener( Event.ADDED_TO_STAGE, init);
else init();
theParent.addChild( this);
}
public function init( e:Event = null) {
var Data:Array= new Array(
{label:'label1', data: 'item1'},
{label:'label2', data: 'item2'},
{label:'label3', data: 'item3'}
);
cbox.dataProvider = new DataProvider( Data);
x = 200;
y = 100;
myText.text = 'Woo-hoo!';
}
}
}
希望这有助于某人。对不起,问题就在这里。