动作脚本3-错误#2136-简单问题

问题描述 投票:0回答: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();

        }
    }
}
actionscript-3
3个回答
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();
    }
}

0
投票

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

的行

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

}

祝你好运。

© www.soinside.com 2019 - 2024. All rights reserved.