0

我与 IDE 斗争,并阅读了一整天,以了解在 AS3 中,lib 符号的导出类名很重要。

我有你好.fla。在其中,我创建了一个带有字符串('hello')的简单文本字段 - 将其转换为符号(movieclip)并执行以下操作:

  • 将类名设为“Hello”。
  • 为 AS 导出已选中
  • 检查第一帧中的导出。

一旦我做了所有这些,我就在舞台上对实例进行了核对。我想我以后可能会添加一些额外的功能,所以我实际上还构建了一个 Hello.as 类,它扩展了 MovieClip,它存在于默认的 pkg* 中,整个 fla 构建得很好:

package 
{
    import flash.display.MovieClip;

    public class Hello extends MovieClip
    {
        public function Hello()
        {
        }
    }
}

现在我的 main.fla(同一个文件夹)使用文档类 Main,而 Main.as 执行以下操作:

private var h:MovieClip;
//...
h = new Hello();
this.addChild(h); //no joy

**直到我开始工作,文件夹中没有任何内容:所有文件都在根文件夹中。*

4

3 回答 3

1

解决方案

假设库符号位于 .fla 中,例如 Hello.fla:

package 
{
    import flash.display.MovieClip;
    import flash.text.TextField;

    /**
     * empty mc (blank stage) with a single library symbol containing whatever the hell you want (eg a shape). with settings:
     * class = Hello <=== this refers to a specific library symbol, not the entire Hello.fla and whatever else is on the stage when you build it.
     * export for AS : checked
     * export for runtime sharing (as Hello.swf) : checked <==== This was the step I'd missed
     * export in 1st frame : checked
     */
    public class Hello extends MovieClip
    {
        public function Hello()
        {
        }
    }
}

主要时间线/文档类:

package 
{
    import flash.display.Loader;
    import flash.display.MovieClip;
    import flash.net.URLRequest;
    import flash.events.Event;
    import Hello;

    /**
     * this is the document class.
     */
    public class Main extends MovieClip
    {
        public function Main()
        {
            this.h = new Hello();
            this.l= new Loader();
            this.l.load( new URLRequest("Hello.swf") );
            this.l.contentLoaderInfo.addEventListener(Event.COMPLETE, this.test);
        }

        public function test(e:Event)
        {
            this.h = new Hello();
            h.x = 100;
            h.y = 100;
            this.addChild(this.h); //shows up on stage. Finally!
        }

        private var h:MovieClip;
        private var l:Loader;
    }

}

希望它可以帮助其他一些新手,比如我刚接触 AS3。

于 2009-11-20T00:46:58.633 回答
0

如果您尝试使用 root.addChild(h),而不是 this.addChild(h),它是否有效?

编辑:_root -> AS3 的根

于 2009-11-19T21:43:32.103 回答
0

您需要将其添加到舞台上,即

stage.addChild(h);
于 2009-11-19T21:44:58.547 回答