我是否可以像在其他labguages中一样在Flash中使用new实例化movieclip,或者我必须在运行时加载?
而不是我是否可以像在其他labguages中一样在Flash中使用new实例化movieclip,或者我必须在运行时加载?,flash,actionscript-3,Flash,Actionscript 3,而不是 public class MyMainMovieClip extends MovieClip { public function MySliderComponent() { var myLoader:Loader = new Loader(); myLoader.load(new URLRequest("MySWF.swf")); myZone.addChild(myLoader);
public class MyMainMovieClip extends MovieClip {
public function MySliderComponent() {
var myLoader:Loader = new Loader();
myLoader.load(new URLRequest("MySWF.swf"));
myZone.addChild(myLoader);
myZone.addChild(c);
}
我是否可以像往常一样实例化:
public class MyMainMovieClip extends MovieClip {
public var c:MySWF = new MySWF();
public function MySliderComponent() {
c.visible = true;
myZone.addChild(c);
}
在第二种情况下,我没有收到任何错误,但没有显示任何内容,而是保持空白。您可以从文档类创建movieclip的新实例,但flash无法知道该类属于哪个FLA,这就是为什么您没有收到错误,但什么也看不到。是的,您可以!让我们考虑两种情况: 同一SWF 如果您使用Flash进行编译,并且movieclip在库中。首先必须为其设置“链接名称”。这将是标识此特定movieclip的类的名称。然后将其实例化:
var clipClass:Class = getDefinitionByName("linkageName") as Class;
var myClip:MovieClip = new clipClass() as MovieClip;
addChild(myClip);
更快的版本(但不太严格)
不同SWF
如果您使用Flash进行编译,您所能做的就是使用加载程序加载swf
,然后这两个库将被合并,您可以使用与上面相同的代码
如果您使用FlexSDK进行编译,那么实际上可以从外部库在SWF中嵌入特定的movieclip
请注意,我在任何地方都使用了类
MovieClip
,但是它们只有一个帧,您可以使用Sprite
。因此基本上答案是,不,您不能。。除非您使用相同的SWF或可以使用flex,[Embed]
不是真正的flex。当您使用它时,您会引入一些Flex类,但是您可以在纯AS3项目中使用它。这是非常有用的,嗯,你似乎不同意:)正如我所理解的,如果我放入库中,是的,如果我不放入库中,我不能?如果你加载外部swf,库将在我写的时候合并。然后,如果您的片段在库中具有链接名称,您将能够实例化它。我说的不是Flex(MXML框架),而是FlexSDK(FlashBuilder和FlashDevelop使用的编译器…)。
var myClip:MovieClip = new linkageName() as MovieClip;
addChild(myClip);
[Embed(source='../bin/library.swf', symbol='linkageName')]
private const clipClass:Class;
...
var myClip:MovieClip = new clipClass() as MovieClip;
addChild(myClip);