从ActionScript3中的If语句中突破?

时间:2016-11-29 14:31:37

标签: android actionscript-3 if-statement

我尝试编写一个小型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);
}

1 个答案:

答案 0 :(得分:1)

只需使用布尔值。这有时被称为标志或旗帜状态。

if (dist < 100 && soundPlayed == false){
    soundPlayed = true;
    mySound.play();
}

然后

if (dist >= 100){
    soundPlayed = false;
}

您只需要向名为var soundPlayed:Boolean = false;

的类添加变量