【发布时间】:2012-05-16 04:32:59
【问题描述】:
我有一个库项目:MovieClip,里面有一个 ComboBox 组件。该项目有一个分配给它的类,myMC。
我想要实现的是像var mmc:myMC = new myMC( stage); 这样的主要电影的调用会:
- 初始化
ComboBox实例的值; - 将 myMC 实例放在舞台上(或另一个 MC 内)。
所以在 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 实例化的对象有所不同?
【问题讨论】:
-
"myMC" 不是最佳类名,也不是将 Stage 传递给构造函数。您应该实施更好的编码约定和面向对象的标准。
-
"myMC" 仅用于示例。我为我的类使用包和合理的树结构。在一个或另一个父容器中实例化我的组件的更好方法是什么?
-
您喜欢在哪里分配财产?加载 SWF 或加载 swf 本身的主要应用程序?
-
它不是加载的外部 swf — 单个 fla 及其符号库 + 一堆 .as 类。
-
看来这是我错误的类型定义。现在有一个这个孤立案例的工作示例。请参阅我自己对问题的回答。
标签: actionscript-3 oop flash-cs5