我嘗試編寫一個小型的Android程序,它告訴我與固定點的距離。當設備與固定點的距離低於100米時,手機會發出聲音。從ActionScript3中的If語句突破?
if (distance<100){mySound.Play()};
這是確定的,聲音開始,但是當GPS發送新的座標和距離低於百米一遍,爲mySound在每一秒一次重新開始。聲音應該只播放一次,當距離在第一時間低於100metes時。有什麼建議?謝謝!
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);
}
**(1)**讓'soundPlayed'無論是作爲公衆**或** ** private ** var,所以它可用於其他功能。 **(2)**最好使用'soundChannel'來停止/開始/暫停任何'Sound'對象的播放。 **(3)**我建議有一個單獨的loadSound函數來準備和解碼,以便稍後您的'GPS_frissit'只需在需要時播放它,現在您可以在Ram中製作多個完全相同聲音的新副本。製作一個負載並重新播放多次。 **(4)**我建議你在你的代碼中嵌入mp3作爲一個類,這樣你的應用代碼和mp3就可以作爲一個單元一起編譯。在線檢查。 –
也'soundPlayed == true;'真的應該''soundPlayed = true;'...當你說'soundPlayed = false;'確保你也做了一些事情(代碼)來實際停止聲音.. –