Flash CS6 AS3,重置声道

Posted

技术标签:

【中文标题】Flash CS6 AS3,重置声道【英文标题】:Flash CS6 AS3, Resetting Sound Channel 【发布时间】:2012-12-18 03:17:34 【问题描述】:

当我使用从官方帮助论坛获得的这段代码加载到 Actionscript 时尝试将音频循环重置为开头时,我遇到了一段时间的问题

var alreadyExecuted:Boolean;
if(!alreadyExecuted)
alreadyExecuted=true;

var s:Sound=new SkaianSpirit();
var sc:SoundChannel=s.play(0,1);

我想要它做的是,在播放动画时无限循环,无论定位如何,也不管是否使用按钮等跳过了帧,但是当动画结束时,轨道需要结束。此时,如果单击按钮将其发送回动画的开头,我希望它开始与以前相同的循环。 目前,它会做第一部分,但不会重播。

几个注意事项:

我没有通过 url 加载它。

我没有使用按钮来控制音量等。它是在动画开始时自动播放。

我是 Actionscript 的完全新手。如果你用我听不懂的行话猛烈抨击我,我就不知道你在说什么。

非常感谢您的帮助!

【问题讨论】:

【参考方案1】:

我总是使用addFrameScript 函数将外部声音与动画同步:

UPD:mc 是动画的名称。将此代码放在创建动画的位置(例如,保存动画的父 Sprite 的第一帧)。

var s:Sound=new SkaianSpirit();
var sc:SoundChannel;

mc.addFrameScript(1, startSound); 
mc.addFrameScript(mc.totalFrames - 1, stopSound);

function startSound():void

    sc = s.play();

function stopSound():void

    sc.stop();

【讨论】:

能不能说的详细一点? 这段代码在动画 mc 启动时开始声音(当动画在第一帧时调用函数 startSound,将开始声音的代码放入这个函数中)并在动画结束时停止声音(当动画在最后一帧,别忘了在这个函数中写真正停止声音的代码)。 就像我说的,我实际上并不知道任何代码是什么。请您以适当的方式布局代码吗? 这可能是因为我的部分沟通不畅,因为当我提到动画时,我指的是整个 swf,而不仅仅是一个电影剪辑。但是如果没有 mc,代码就无法工作,因为不存在,所以我删除了 mc。从代码调用。现在的问题是它可以开始播放声音,然后循环播放,但不会停止播放,当按下重放按钮时,它只会分层播放声音。之前单击以停止附加到它的声音 sn-p,但您的代码与它发生冲突并使整个时间线循环而没有按预期在最后一帧停止。

以上是关于Flash CS6 AS3,重置声道的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flash AS3 中通过鼠标单击暂停多个符号

Flash CS6 和 AIR iOS 的远程调试?

AS3:如何从影片剪辑内部检查和重置主时间轴上的变量

实现一个python RTMP服务器,flash播放器发送媒体数据后重置连接,如何排除故障

Dreamweaver CS6怎么更改界面背景色

交换机重置密码