2013-12-12 48 views
0

我正在嘗試使用加速度計編寫一個移動應用程序,每當球(由加速度計移動)到達中間水平線時,它會播放聲音。if/else loop在Java中無法正常工作

這是我的全部代碼:

 import flash.events.Event; 
    import flash.media.SoundChannel; 
    import flash.media.Sound; 

    var accelX:Number; 
    var accelY:Number; 
    var tl:sound = new sound(); 
    var counter:Boolean = false; 


    var fl_Accelerometer:Accelerometer = new Accelerometer(); 
    fl_Accelerometer.addEventListener(AccelerometerEvent.UPDATE, 
    function fl_AccelerometerUpdateHandler(event:AccelerometerEvent):void 
    { 
    accelX = event.accelerationX; 
    accelY = event.accelerationY; 
    } 


    ball.addEventListener(Event.ENTER_FRAME, moveBall); 
    function moveBall(evt:Event){ 
    ball.x -= accelX*30; 
    ball.y += accelY*30; 

    if(ball.x > (480-ball.width/2)){ 
    ball.x = 480-ball.width/2; 
    } 
    if(ball.x < (0+ball.width/2)){ 
    ball.x = 0+ball.width/2; 
    } 
    if(ball.y > (800-ball.height/2)){ 
    ball.y = 800-ball.height/2; 
    } 
    if(ball.y < (0+ball.height/2)){ 
    ball.y = 0+ball.height/2; 
} 
if(ball.y > 398 && ball.y < 402 && counter == false) 
{ 
    tl.play(0, 0); 
    counter = true; 
    } 
    else 
    { 
    counter = false; 
    tl.stop; 
    } 

    } 

這是的if-else循環在按預期不工作結束。當球位於398和402座標內時,它會保持循環。

我在做什麼錯?

+4

這不是'Java'代碼。 'var accelX:Number;'? –

+0

if/else結構不是循環。 – Blub

+0

那是什麼語言? – Maroun

回答

0

我可能是錯的,但在我看來,最後一個}不在它的位置,似乎應該在那裏。

if(ball.y > 398 && ball.y < 402 && counter == false) 
{ 
    tl.play(0, 0); 
    counter = true; 
    } 
    else 
    { 
    counter = false; 
    tl.stop; 
    } 

    } 
+0

,一個是需要關閉在線16 功能moveBall支架(EVT:事件)進行{ 我的錯誤壞格式:) – Gadgou

0

由於stop是一個函數,所以需要用括號(如stop())來調用它。

嘗試 聲明此之上,

var soundControl:SoundChannel; 

然後,

if(ball.y > 398 && ball.y < 402 && counter == false) 
{ 
    soundControl = tl.play(0, 0); 
    counter = true; 
} 
else 
{ 
    counter = false; 
    soundControl.stop(); 
} 

希望它能幫助。

+0

當我這樣做,我得到錯誤: TypeError:錯誤#1006:停止不是一個函數。 – Gadgou

+0

編輯我的代碼檢查它。 –