我可以像在其他语言中一样用Flash中的new实例化动画片段,还是我不得不在运行时加载?

时间:2011-04-10 11:18:58

标签: 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);
    myZone.addChild(c);

  }

我可以像往常一样实例化:

public class MyMainMovieClip extends MovieClip {                          

    public var c:MySWF = new MySWF();

  public function MySliderComponent() { 

    c.visible = true;
    myZone.addChild(c);

  }

我在第二种情况下没有得到任何错误,但没有任何错误显示但是保持空白。

2 个答案:

答案 0 :(得分:1)

你可以从文档类创建movieclip的新实例,但是flash无法知道这个类属于哪个FLA,这就是为什么你没有错误,但什么也看不见..

答案 1 :(得分:1)

是的,你可以!让我们考虑两种情况。

相同的SWF

如果您正在使用Flash进行编译,并且movieclip位于库中。首先必须为它设置“链接名称”。这将是标识此特定动画片段的类的名称。然后实例化它:

var clipClass:Class = getDefinitionByName("linkageName") as Class;
var myClip:MovieClip = new clipClass() as MovieClip;
addChild(myClip);

它的更快版本(但不太严格)

var myClip:MovieClip = new linkageName() as MovieClip;
addChild(myClip);

不同的SWF

如果您正在使用Flash进行编译,您所能做的就是使用Loader加载swf,然后合并两个库,您可以使用与上面相同的代码。

如果您正在使用Flex SDK进行编译,您实际上可以从外部库中将特定的动画片段嵌入到SWF中。

  1. 在Flash中创建一个动画片段
  2. 给它一个连结名称
  3. 将其编译为swf或swc
  4. 在AS代码中编写以下代码(使用Flex SDK编译)
  5. AS3

    [Embed(source='../bin/library.swf', symbol='linkageName')]
    private const clipClass:Class;
    ...
    var myClip:MovieClip = new clipClass() as MovieClip;
    addChild(myClip);
    

    请注意,我在任何地方都使用过课程MovieClip,但他们只有一个框架可以使用Sprite代替。