【问题标题】:Break out from If statement in ActionScript3?从 ActionScript3 中的 If 语句中脱颖而出?
【发布时间】:2016-11-29 14:31:36
【问题描述】:

我尝试编写一个小的 Android 程序,它告诉我到一个固定点的距离。当设备与固定点的距离在 100 米以下时,手机会播放声音。

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 设为 publicprivate 变量,以便它可用于其他函数。 (2) 最好使用soundChannel 来停止/开始/暂停Sound 对象的任何播放。 (3) 我建议有一个单独的 loadSound 函数来准备和解码,以便稍后您的 GPS_frissit 只需在需要时播放它,现在您可以在 Ram 中制作多个完全相同的声音的新副本。一次加载并重新播放多次。 (4) 我建议您将 mp3 作为一个类嵌入到您的代码中,以便您的应用程序代码和 mp3 一起编译为一个单元。在线检查。
  • 另外soundPlayed == true; 真的应该是soundPlayed = true;...当你说soundPlayed = false; 时,确保你也做一些事情(代码)来真正停止声音..

标签: android actionscript-3 if-statement


【解决方案1】:

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

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

然后

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

你只需要为你的类添加一个名为var soundPlayed:Boolean = false;的变量

【讨论】:

  • 谢谢!在哪里放置var soundPlayed:Boolean = false; 变量?我已经把public function GPS_refresh(event:GeolocationEvent):void外面的值改回false了,但是声音又开始了。
  • 把它放在包里面,但是在任何函数之外。甚至在您的主文档构造函数之外和之前。
猜你喜欢
  • 1970-01-01
  • 2011-01-30
  • 1970-01-01
  • 1970-01-01
  • 2010-11-27
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多