构造函数不工作,编译错误

时间:2011-09-30 13:02:41

标签: flash actionscript-3 oop

我正在查看游戏引擎代码,我试图重现自己,但是我遇到了编译错误。

Main.as

package {
  import flash.display.Sprite;

  public class Main extends Sprite
  {
    public function Main():void
    {
       var firstDoes:AB1 = new AB1();
       firstDoes.secondDoes._AB2();             
    }
  }
}

AB1.as

package {
  import flash.display.Sprite;

  public class AB1 extends Sprite
  {
    var secondDoes:AB2 = new AB2();

    public function _AB1():void
    {                   
    }
  }
}

AB2.as

package {
  import flash.display.Sprite;

  public class AB2 extends Sprite
  {
    public function _AB2():void
    {
        this.graphics.beginFill(0x33FF22);
        this.graphics.drawCircle(50, 50, 20);
        this.graphics.endFill();
        this.addChild(this);
    }
  }
}

为什么不工作? 提前谢谢。

5 个答案:

答案 0 :(得分:3)

在AB1和AB2构造函数中是否有意图使用下划线?如果没有,我建议将“_AB1”重命名为“AB1”,将“_AB2”重命名为“AB2”。

答案 1 :(得分:3)

我尝试运行此代码。我没有得到编译错误,但我得到一个运行时错误。你不能把自己添加为孩子:

this.addChild(this); // <-------- BOOM!

答案 2 :(得分:1)

尝试从AB2删除this.addChild(this);,将var secondDoes:AB2 = new AB2();更改为public var secondDoes:AB2 = new AB2();并将addChild(secondDoes);添加到AB1构造函数

答案 3 :(得分:0)

Class名称和constructor名称应该相同。

var secondDoes:AB2;将其设为public

graphicsDisplayObject的属性,因此您应该使用    <{1}}或MovieClipSprite来创建您的圈子。

主要课程:

Shape

AB1班:

package {
    import flash.display.Sprite;
    public class Main extends Sprite    {
        public function Main():void     {
            var firstDoes:AB1 = new AB1();
            addChild(firstDoes);
        }
    }
}

AB2课程:

package {
    import flash.display.Sprite;
    public class AB1 extends Sprite {
        public var secondDoes:AB2;
        public function AB1():void{
            secondDoes = new AB2();
            addChild(secondDoes);
        }
    }
} 

答案 4 :(得分:-1)

我认为问题在于

public function Main():void

构造函数不能具有返回类型。你应该使用

public function Main()