我正在尝试用AS3做一个简单的游戏,类似于Tilt to Live。我试着让一个球跟随我的鼠标(另一个球),这样当球接触到鼠标球时,你就会输。它一直给出错误,我真的不知道如何解决它。
到目前为止,这是我的游戏:
公共类Main扩展了Sprite {
public function Main():void
{
var vijand:Sprite = new Sprite ();
vijand.graphics.beginFill(0xFFFF66) ;
vijand.graphics.drawCircle(30,30 ,30 );
addChild(vijand);
var vijand1:Sprite = new Sprite ();
vijand1.graphics.beginFill(0xFFFF66) ;
vijand1.graphics.drawCircle(50,50 ,50 );
addChild(vijand1);
}
public function beweeg(e:Event.):void
{
vijand.x = mouseX;
vijand.y = mouseY;
if (vijand.x > vijand1.x)
{
vijand1.x += 2;
}
if (vijand.y > vijand1.y)
{
vijand1.y += 2;
}
if (vijand.x < vijand1.x)
{
vijand1.x -= 2;
}
if (vijand.y < vijand1.y)
{
vijand1.y -= 2;
}
}
}
}发布于 2014-04-02 21:29:51
我能看到的一个问题是你的'vijand‘和'vijand1’变量对于你的主构造函数是局部的。如果你想在主构造函数之外访问它们,你必须在构造函数之外声明它们,例如:
private var vijand:Sprite = new Sprite();
private var vijand1:Sprite = new Sprite();
public function Main():void
{
....此外,'beweeg‘函数中也有一个拼写错误。删除“.”在‘Event’之后:
public function beweeg(e:Event):void
{
....最后,您还需要一个事件侦听器来触发beweeg函数。可能是主构造函数中的ENTER_FRAME侦听器:
addEventListener(Event.ENTER_FRAME, beweeg);发布于 2014-04-02 21:40:16
var myBall:Shape = new Shape();
var enemyBall:Shape = new Shape();
var ballRadius:int = 8;
var dx:Number, dy:Number, radian:Number, speed:Number = 10;
myBall.graphics.beginFill(0x009900);
myBall.graphics.drawCircle(0, 0, ballRadius);
enemyBall.graphics.beginFill(0x990000);
enemyBall.graphics.drawCircle(0, 0, ballRadius);
addChild(myBall);
addChild(enemyBall);
//Place enemy at center
enemyBall.x = stage.stageWidth * 0.5;
enemyBall.y = stage.stageHeight * 0.5;
addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame(e:Event):void {
myBall.x = stage.mouseX;
myBall.y = stage.mouseY;
dx = myBall.x - enemyBall.x;
dy = myBall.y - enemyBall.y;
if (Math.sqrt(dx * dx + dy * dy) <= ballRadius * 2) {
//NOOOOOoooooo
//Game over
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
} else {
//Update enemy position
//Every N ticks, increase speed, because it will be very easy game ;)
radian = Math.atan2(dy, dx);
enemyBall.x += Math.cos(radian) * speed;
enemyBall.y += Math.sin(radian) * speed;
}
}https://stackoverflow.com/questions/22811589
复制相似问题