Я пытаюсь написать небольшую программу для Android, которая сообщает мне расстояние от точки исправления. Когда расстояние устройства и фиксированная точка ниже 100 метров, телефон воспроизводит звук.Выйти из инструкции If в ActionScript3?
if (distance<100){mySound.Play()};
Это нормально, звук начинается, но когда GPS послать новые координаты и расстояние меньше 100 метров снова, MySound снова и снова начинается в каждую секунду. Звук должен воспроизводиться только один, когда в первый раз расстояние уменьшается до 100 метров. Любой совет? Спасибо!
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», чтобы остановить/запустить/приостановить любое воспроизведение объекта «Звук». ** (3) ** Я предлагаю иметь отдельную функцию loadSound, которая подготавливает и декодирует, так что позже ваш 'GPS_frissit' просто просто воспроизводит его, когда это необходимо, прямо сейчас вы делаете несколько новых копий того же самого звука в Ram. Сделайте одну загрузку и повторите ее много раз. ** (4) ** Я предлагаю вам вставить mp3 в качестве класса в свой код, чтобы ваш код приложения и mp3 были скомпилированы вместе как одно устройство. Проверьте онлайн для этого. –
Также 'soundPlayed == true;' действительно должно быть 'soundPlayed = true;' ... Когда вы говорите 'soundPlayed = false;' убедитесь, что вы также что-то сделали (код), чтобы фактически остановить звук. –