2013-12-12 4 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; 
    } 

    } 

Это если-иначе петля на конце, который не работает должным образом. Он продолжает зацикливать звук, когда мяч находится в пределах координат 398 и 402.

Что я делаю неправильно?

+4

Это не код Java. 'var accelX: Number;'? –

+0

если/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 (ЭВТ: Event) { моя ошибка за плохое форматирование :) – Gadgou

0

Поскольку остановка - это функция, которую необходимо вызвать с помощью круглых скобок, таких как 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: stop не является функцией. – Gadgou

+0

Отредактированный мой код проверяйте его. –

Смежные вопросы