我正在尝试使用加速度计编写一个移动应用程序,每当球(由加速度计移动)到达中间水平线时它就会发出声音。
这是我的全部代码:
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坐标内时,它会保持循环声音。
我做错了什么?
答案 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();
}
希望它有所帮助。