if / else循环在Java中无法正常工作

时间:2013-12-12 09:31:26

标签: flash loops if-statement actionscript boolean

我正在尝试使用加速度计编写一个移动应用程序,每当球(由加速度计移动)到达中间水平线时它就会发出声音。

这是我的全部代码:

     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坐标内时,它会保持循环声音。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

我可能错了,但在我看来,最后的}不在它的位置,似乎它应该在那里。

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

     }

答案 1 :(得分: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();
}

希望它有所帮助。