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

时间:2015-01-25 02:11:20

标签: actionscript-3

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

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();

        }
    }
}

3 个答案:

答案 0 :(得分:1)

假设Main是您的文档类,则无法实例化它。这可能解释了SWF无效数据错误。

您尝试执行的操作是从Main访问Enemy上的某个功能。要做到这一点,您只需要在Main课程内引用Enemy。如果您将Enemy实例添加到显示列表,则可以使用rootparent来获取对Main的引用。您还可以通过Main类的构造函数传递对Enemy的引用:

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();
    }
}

答案 1 :(得分:0)

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

的行

答案 2 :(得分:0)

如果您想从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);
        }
    }

}

祝你好运。