我有两个as3项目。项目A
有2个文件(fla
包含1个框架和一些组件,as
包含一些行为和默认构造函数。我想通过as3代码在项目A
中使用项目B
。但是,当我执行A a = new A(x, y, z);
之类的操作时,我收到了很多错误,我在A.as
中使用了未定义的属性(在我的A.fla
文件中定义的属性)。
所以,现在我正在使用加载程序将A.swf
动态加载到我的项目B
中。这可能不是一种有效的方法。在项目A
中导入项目B
的正确方法是什么?
感谢。
答案 0 :(得分:3)
加载swf并不是一个糟糕的方法..
****编辑我忘记了最明显的答案:
如果您使用的是CS4,则应转到发布设置并选中“导出为SWC”
在flaB中,链接外部库(Actionscript设置)以包含刚刚生成的SWC flaA。现在,你可以在flaB内说
addChild(new flaAClass());
但是你不应该在你的FLA中定义任何属性。工作的良好标准是这样的: 1)转到“发布”设置并取消选中“自动声明舞台实例”。
2)设置你的Document类/ movieclip /,以便在类中对舞台上的内容进行引用(这就是为什么你必须做第1步 - 否则它会抱怨你声明它两次)
示例:舞台上有movieclip“mcA”..您的课程可能如下所示:
包{
public class mainA extends MovieClip {
public var mcA:MovieClip;
public function mainA(...args):void
{
trace(mcA); //If mcA is on the stage and this is the document class, this will
//return [object MovieClip]
}
}
}
3)作为文档类或基类附加到movieclip中的某些内容,您可以通过这种方式引用它。
以上内容适用于自定义动态类,但不包含FLA带来的任何内容。如果你想从fla A中取出它们并将它们放入fla B ..你应该首先加载SWF,然后从它的库中拉出一个类(但这可能是你不需要的不必要的复杂性)。