2014-04-02 70 views
0

我正在尝试在AS3中制作一个类似于Tilt To Live的简单游戏。 我试着让球跟着我的鼠标(另一个球),所以当球接触到鼠标球时,你将会失去。 它不断给错误,我真的不知道如何解决它。带有AS3的球跟踪鼠标

这是目前为止我的比赛:

公共类主要扩展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; 
    } 

    } 


    } 

    } 

回答

0

的一个问题,我可以看到的是,你的“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); 
0

你应该为你的移动对象来创建正确的逻辑。这里是你的例子,其实很有趣,我在发布前玩过一段时间

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