Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我是否可以像在其他labguages中一样在Flash中使用new实例化movieclip,或者我必须在运行时加载?_Flash_Actionscript 3 - Fatal编程技术网

我是否可以像在其他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

  • 在Flash中创建电影剪辑
  • 给它一个链接名
  • 将其编译为swf或swc
  • 在AS代码中编写以下代码(使用FlexSDK编译)
  • AS3


    请注意,我在任何地方都使用了类
    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);