我尝试编写一个小型Android程序,它告诉我距离修复点的距离。当设备和固定点的距离低于100米时,手机会播放声音。
if (distance<100){mySound.Play()};
没关系,声音开始,但是当GPS发送新坐标,并且距离再次低于100米时,mySound会在每秒钟内反复启动。当第一次距离降低到100metes以下时,声音应该只播放一次。有什么建议? THX!
var soundPlayed:Boolean=false;
public function GPS_frissit(event:GeolocationEvent):void
{
var R = 6371; // km
var dLat = (47.507105-event.latitude)*Math.PI/180;
var dLon = (19.024519-event.longitude)*Math.PI/180;
var lat1 = (event.latitude)*Math.PI/180;
var lat2 = 47.507105*Math.PI/180;
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
var e = Math.round(d*1000);
var tavolsag:String;
var mySound:Sound = new Sound();
mySound.load(new URLRequest("sound.mp3"));
if (e < 100 && soundPlayed == false){
soundPlayed == true;
mySound.play();
}
if (e >= 100){
soundPlayed = false;
}
if (e <100){
tavolsag = "X";
}
else if (e > 100)
{
tavolsag = "Y";
}
document.write(tavolsag);
}
答案 0 :(得分:1)
只需使用布尔值。这有时被称为标志或旗帜状态。
if (dist < 100 && soundPlayed == false){
soundPlayed = true;
mySound.play();
}
然后
if (dist >= 100){
soundPlayed = false;
}
您只需要向名为var soundPlayed:Boolean = false;