我正在查看游戏引擎代码,我试图重现自己,但是我遇到了编译错误。
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);
}
}
}
为什么不工作? 提前谢谢。
答案 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
。
graphics
是DisplayObject
的属性,因此您应该使用
<{1}}或MovieClip
或Sprite
来创建您的圈子。
主要课程:
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()