2014-04-02 73 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; 
    } 
}