0

我在 Adob​​e 论坛上找到了一些关于在“flash html5 mycanva.fla”中编码 MouseOver 以在悬停按钮时触发声音的问题的答案。看这里

问题是,当您将鼠标移出按钮时,当停止播放声音时,我被“MouseOut 功能”卡住了!

最重要的是在鼠标悬停时暂停声音,并在鼠标悬停时从暂停点开始播放。但我不想显得太贪婪;-)

这是我在 my_flash_canva.fla 中使用的代码:

var frequency = 3;  
stage.enableMouseOver(frequency);  
this.mybutton.addEventListener("mouseover", fl_MouseOverHandler);  

function fl_MouseOverHandler(){  
    playSound("monstres");  
    //linked sound from library by dble clicking on it and named a link in the blank area.Indeed, the action script panel in "mysound" properties panel is greyed..  
    //works like a charm   
}  

this.mybutton.addEventListener("mouseout", fl_MouseOutHandler);  
function fl_MouseOutHandler()  {  
    stopSound("monstres");  
    // doesn't work  
}  

使用 flash pro cc 2014。我想我一定是遗漏了一些东西或语法错误,但在我看来,与 playSound("xxx") 一起使用的东西应该与 stopSound("xxx") 一起使用。但显然事情没那么简单。欢迎任何线索,我将不胜感激。非常感谢。

奥利维尔。

4

1 回答 1

2

你不能那样停止声音。是什么stopSound()?如果您查看导出的 HTML,您会发现这playSound是一个使用 ID 播放声音的函数。它应该返回一个您可以控制的实例。您必须存储该实例并调用stop()它。

var sound;
function fl_MouseOverHandler(){  
    sound = playSound("monstres"); 
}  

this.mybutton.addEventListener("mouseout", fl_MouseOutHandler);  
function fl_MouseOutHandler()  {  
    sound.stop(); 
} 

您必须修改playSoundHTML 中生成的方法以返回播放的实例,因为它目前没有:

function playSound(id, loop) {
    return createjs.Sound.play(id, createjs.Sound.INTERRUPT_EARLY, 0, 0, loop);
}

向 Adob​​e 报告这是一件好事,因为它应该已经这样做了。我已经记录了一个错误来做到这一点。 https://github.com/CreateJS/SoundJS/issues/218

[编辑:此修复包含在 Adob​​e Animate 中]

于 2015-11-16T14:29:17.243 回答