Actionscript 3 如何在从库加载的MC中指定组件的属性?
我有一个库项:MovieClip,里面有一个组合框组件。该项有一个指定给它的类myMC 我想要实现的是,一个来自主要电影的呼叫,比如var mmc:myMC=newmymcstage;将: 初始化组合框实例的值; 将myMC实例放在舞台上或另一个MC内。 因此,在myMC构造函数中,我编写了smth,如: cbox是myMC中ComboBox实例的名称 发生的情况是,组合框没有指定任何值。这是我的问题的一个简化示例,而实际情况涉及更多的UI组件——所有这些组件都会丢失它们的值 调试器显示正确类型的组件对象和值,但它们没有显示所示的阶段对象Actionscript 3 如何在从库加载的MC中指定组件的属性?,actionscript-3,oop,flash-cs5,Actionscript 3,Oop,Flash Cs5,我有一个库项:MovieClip,里面有一个组合框组件。该项有一个指定给它的类myMC 我想要实现的是,一个来自主要电影的呼叫,比如var mmc:myMC=newmymcstage;将: 初始化组合框实例的值; 将myMC实例放在舞台上或另一个MC内。 因此,在myMC构造函数中,我编写了smth,如: cbox是myMC中ComboBox实例的名称 发生的情况是,组合框没有指定任何值。这是我的问题的一个简化示例,而实际情况涉及更多的UI组件——所有这些组件都会丢失它们的值 调试器显示正确类
请解释一下,我做错了什么?为什么舞台上的实例与实例化的对象有所不同?好的,似乎是我的错误:错误的类型和混乱的代码 这是一个毕竟有效的例子。因此,也许用自己的构造函数将对象放在舞台上不是最好的做法,但是这是可行的。这个 主文档有一个类DocTest: 库项中有一个组合框和一个文本字段,并附加了以下类代码:
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!';
}
}
}
希望这对别人有帮助。对于studid的问题,很抱歉。myMC不是一个最佳的类名,也不是将Stage传递给构造函数。您应该实现更好的编码约定和面向对象的标准。myMC就是一个例子。我为我的类使用包和合理的树结构。在一个或另一个父容器中实例化组件的更好方法是什么?您希望在哪里分配属性?主要应用于加载的SWF,或者加载的SWF本身?它不是一个加载的外部SWF-单个fla及其符号库+一堆.as类。似乎这是我错误的类型定义。现在有一个这个孤立案例的工作示例。看看我自己对这个问题的回答。
package {
import flash.display.Sprite;
import libItem;
public class DocTest extends Sprite {
public function DocTest() {
var instance:libItem = new libItem( this);
}
}
}
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!';
}
}
}