Actionscript 3 使用greensock在特定播放进度或视频时间播放声音?

Actionscript 3 使用greensock在特定播放进度或视频时间播放声音?,actionscript-3,gsap,Actionscript 3,Gsap,我正在使用greensock LoaderMax加载视频文件和声音文件。我已经复制了尽可能多的代码。一个视频(s9)正在播放,在视频的某个百分比,我需要播放另一个声音 if(s9.playProgress > .1) // This is what I can't get to work { s12_sound.playSound(); //This sound won't play at .1 playProgress } s9.content.visible = true;

我正在使用greensock LoaderMax加载视频文件和声音文件。我已经复制了尽可能多的代码。一个视频(s9)正在播放,在视频的某个百分比,我需要播放另一个声音

if(s9.playProgress > .1) // This is what I can't get to work
{
    s12_sound.playSound(); //This sound won't play at .1 playProgress
}

s9.content.visible = true;

s9.playVideo();

stop();

s9.addEventListener(VideoLoader.VIDEO_COMPLETE, play_s9_loop); //This plays a video once s9 is done.

function play_s9_loop(event:Event):void
{
    s9.content.visible = false;
    s9_loop.content.visible = true;
    s9_loop.playVideo();
}

我猜你就是不能在playProgress上做if()?此外,我在AS3方面也很差劲。

我以前没有使用过这个类,但在阅读了文档后,看起来您可以做如下操作:

在处理函数内部

protected function handleMidpoint(e:Event):void{
     //play your sound
}

您应该能够只监听视频上的INIT事件(这通常意味着它已加载足够的内容来确定视频的持续时间),然后添加一个AS-cue点

//...after you create your VideoLoader...
myVideoLoader.addEventListener(LoaderEvent.INIT, initHandler);
myVideoLoader.load();
function initHandler(event:LoaderEvent):void {
    myVideoLoader.addASCuePoint( myVideoLoader.duration * 0.1, "myLabel" );
    myVideoLoader.addEventListener(VideoLoader.VIDEO_CUE_POINT, cuePointHandler);
}
function cuePointHandler(event:LoaderEvent):void {
    trace("Hit the cue point " + event.data.name);
    s12_sound.playSound();
}

还要确保预先加载s12_声音,以便在需要时播放。否则,您可以随意调用playSound(),这样就不会发生:)

没有骰子,没有播放声音。更简单的说,我知道我需要它播放的时间,但我无法让它工作,但我如何编写一个计时器,在进入帧时执行,然后在59秒后播放声音?我试过一个类似的计时器,但我不能让它工作。计时器不会给你你需要的准确性,我不会走这条路。你知道视频提示点监听器是否正在启动吗?我会寻找一些使用这个的例子,试着看看这个:-你是在视频加载后添加提示点吗?我会跟踪什么来查看是否触发?(对不起,还是一个noob)还有,有一个画面,画面上有一个叫做“倒带器”的movieclip(我们不久前起了这个名字,现在已经不是倒带器了)。在该电影剪辑中大约有20帧,每帧都有一个stop()和一个f4v(以前由队列加载)。我在视频播放的帧(18)上有你的代码,我需要一个完全独立的mp3以X秒的速度播放。(很抱歉,我想告诉你更多的细节)好吧,我试过这个,它跟踪“击中提示点myLabel”,但它不会播放声音。我确保函数在加载队列之后,并且INIT侦听器在加载队列之前。我猜我正在做的是阻止声音播放的其他事情,但可能有十亿件事情,项目代码分散在成吨的帧中。如果我发现了问题,我会在这里重新发布。什么,好吧,当我发布这篇文章并把它放到网上时,它出于某种原因工作了,并且播放了声音。不知道是什么造成的,但它现在起作用了。非常感谢你的帮助。接下来的几天,我会继续玩这个游戏,如果我发现我的游戏出了什么问题,我会发布。
//...after you create your VideoLoader...
myVideoLoader.addEventListener(LoaderEvent.INIT, initHandler);
myVideoLoader.load();
function initHandler(event:LoaderEvent):void {
    myVideoLoader.addASCuePoint( myVideoLoader.duration * 0.1, "myLabel" );
    myVideoLoader.addEventListener(VideoLoader.VIDEO_CUE_POINT, cuePointHandler);
}
function cuePointHandler(event:LoaderEvent):void {
    trace("Hit the cue point " + event.data.name);
    s12_sound.playSound();
}