Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Flash中播放一次声音_Flash_Actionscript 3_Audio - Fatal编程技术网

在Flash中播放一次声音

在Flash中播放一次声音,flash,actionscript-3,audio,Flash,Actionscript 3,Audio,我建立了一个Flash网站,它被用作教学工具。客户现在希望向各部分添加画外音。有没有办法在电影剪辑中播放一次声音,如果观众回到剪辑中,声音就不会再播放了?谢谢。播放一次声音后,您可以将布尔标志设置为false var flag:Boolean = false; if(!flag){ flag = true; playSound(); } 播放一次声音后,可以将布尔标志设置为false var flag:Boolean = false; if(!flag){ flag = tru

我建立了一个Flash网站,它被用作教学工具。客户现在希望向各部分添加画外音。有没有办法在电影剪辑中播放一次声音,如果观众回到剪辑中,声音就不会再播放了?谢谢。

播放一次声音后,您可以将布尔标志设置为false

var flag:Boolean = false;
if(!flag){ 
  flag = true;
  playSound();
}

播放一次声音后,可以将布尔标志设置为false

var flag:Boolean = false;
if(!flag){ 
  flag = true;
  playSound();
}

这应该能奏效。我还没有在Flash中测试过这段代码,但这应该会让你走上正确的方向

import flash.net.SharedObject

//Use anything in place of "sounds"
var so:SharedObject = SharedObject.getLocal("sounds");

//Check if the sound has not been played
//Use anything in place of "specificSoundPlayed"
if(so.data.specificSoundPlayed == false)
{
//Play the sound
var snd:Sound = new Sound();
snd.load(new URLRequest("my.mp3"));
snd.play();

//Set the shared object property so we know the sound was played
so.data.specificSoundPlayed = true;
}

这应该能奏效。我还没有在Flash中测试过这段代码,但这应该会让你走上正确的方向

import flash.net.SharedObject

//Use anything in place of "sounds"
var so:SharedObject = SharedObject.getLocal("sounds");

//Check if the sound has not been played
//Use anything in place of "specificSoundPlayed"
if(so.data.specificSoundPlayed == false)
{
//Play the sound
var snd:Sound = new Sound();
snd.load(new URLRequest("my.mp3"));
snd.play();

//Set the shared object property so we know the sound was played
so.data.specificSoundPlayed = true;
}

我喜欢扎克祖恩的回答
SharedObject
几乎是在机器上存储类似cookie的数据的唯一方法。但我建议您也一定要添加必要的错误捕获(比如try/catch块),因为一些用户(包括我自己)已经将Flash Player设置为不允许站点存储共享对象


如果您不想依赖于
SharedObject
,那么您可能需要设置一些从Flash到其他服务器端技术的调用。如果您的站点要求用户登录,您可能已经有一些用户的持久数据;您可以添加一些服务呼叫,让Flash发送和接收有关声音是否已播放的数据。

我喜欢zachzurn的回答
SharedObject
几乎是在机器上存储类似cookie的数据的唯一方法。但我建议您也一定要添加必要的错误捕获(比如try/catch块),因为一些用户(包括我自己)已经将Flash Player设置为不允许站点存储共享对象


如果您不想依赖于
SharedObject
,那么您可能需要设置一些从Flash到其他服务器端技术的调用。如果您的站点要求用户登录,您可能已经有一些用户的持久数据;您可以添加一些服务调用,让Flash发送和接收有关声音是否已播放的数据。

但是,如果每次用户进入代码所在的帧时都会运行这些服务调用,那么每次flag都将始终为true,因此每次都会播放声音。这应该在其他地方处理,在给定的时间线之外。是的,标志初始化不会发生在同一帧上,这只是为了说明这个概念。第一行应该放在应用程序初始化的地方,即只运行一次。但是如果每次用户进入代码所在的帧时都运行该行,那么每次该标志都将为true,因此每次都会播放声音。这应该在其他地方处理,在给定的时间线之外。是的,标志初始化不会发生在同一帧上,这只是为了说明这个概念。第一行应该放在应用程序初始化的地方,即只运行一次。这将用于只播放一次声音,即使他们关闭swf并在同一台计算机/浏览器上重新访问它。这将用于只播放一次声音,即使他们关闭swf并在同一台计算机/浏览器上重新访问它