actionscript 3 - 错误 #2136 - 简单问题

actionscript 3 - Error #2136 - simple issue

这是非常基本的,但为了帮助我理解,请有人解释为什么这不起作用。试图从一个文件调用一个函数到另一个文件,并得到以下错误。

Error: Error #2136: The SWF file file:///test/Main.swf contains invalid data.
at code::Main()[C:\Users\Luke\Desktop\test\code\Main.as:12]
Error opening URL 'file:///test/Main.swf'

Main.as

package code {

        import flash.display.MovieClip;
        import flash.events.*;

        import code.Enemy;  

    public class Main extends MovieClip 
    {
        public function Main()
            {
                var enemy:Enemy = new Enemy();
            }

            public function test():void
            {
                trace("Test");
            }
      }
}

Enemy.as

package code {

        import flash.display.MovieClip;
        import flash.events.*;

        import code.Main;

    public class Enemy extends Main {

        public function Enemy() {

            var main:Main = new Main();
            main.test();

        }
    }
}

从 class Main 的构造函数中,您正在创建 Enemy 的对象。在 Enemy 的构造函数中,您正在创建 Main 的对象。因此它会继续创建这两个对象,直到 堆栈溢出。它永远不会到达你有 main.test();

的那一行

假设 Main 是您的文档 class,您无法实例化它。这或许可以解释 SWF 无效数据错误。

您尝试做的似乎是从您的 Enemy 访问 Main 上的一个函数。为此,您只需要在 Enemy class 中引用 Main。如果将 Enemy 实例添加到显示列表中,您可能可以使用 rootparent 来获取对 Main 的引用。您还可以通过 Enemy class:

的构造函数传递对 Main 的引用
public class Main {
    public function Main() {
        new Enemy(this);
    }
    public function test():void {
        trace("test");
    }
}

public class Enemy {
    public function Enemy(main:Main) {
        main.test();
    }
}

如果你想从 main.as 获取数据,你可以使用静态变量。


package  {

    import flash.display.MovieClip;

    public class Main extends MovieClip {
        // i well get this var in my Enemy as.
        public var i:uint=1021;

        public function txtuto() {
            // constructor code
        }
    }

}`
// the Enemy.as
`package  {
    import flash.display.MovieClip;


    public class Enemy extends MovieClip {

        public static var tx:Main = new Main;
        public function Enemy() {
            trace(tx.i);
        }
    }

}

祝你好运。