我试图在播放音频时使用ENTER_FRAME事件,但代码没有执行处理函数。
public function play_mp3(path:String,path1:String):void {
var snd:Sound = new Sound();
snd.load(new URLRequest(path), new SoundLoaderContext());
channel = snd.play();
addEventListener(Event.ENTER_FRAME,myFunction);}
public function myFunction(e:Event){
LogFB.info('test1234'); }
答案 0 :(得分:3)
您的问题很可能是您发布的代码所在的类不在显示树上。 (它不是显示对象或者没有添加到舞台上)。
如果它不在显示树上,则ENTER_FRAME
将不会在其上发送。
你可以通过几种方式解决这个问题。
将类中的内容(或舞台本身)引用到类中。然后在该对象上添加ENTER_FRAME侦听器。
var stage:Stage;
public function MyClass(stage_:Stage){
stage = stage_;
}
....
stage.addEventListener(Event.ENTER_FRAME, myFunction);
放弃ENTER_FRAME,只需使用Timer
var timer:Timer
public function play_mp3(path:String,path1:String):void {
var snd:Sound = new Sound();
snd.load(new URLRequest(path), new SoundLoaderContext());
channel = snd.play();
timer = new Timer(250); //tick every quarter second
timer.addEventListener(TimerEvent.TIMER, myFunction);
timer.start();
}
public function myFunction(e:Event){
LogFB.info('test1234');
}
答案 1 :(得分:-1)
您的问题出在LogFB中。
试试这个,你会看到函数内部的痕迹......
var channel : SoundChannel = new SoundChannel();
function play_mp3(path:String,path1:String):void {
var snd:Sound = new Sound();
snd.load(new URLRequest(path), new SoundLoaderContext());
channel = snd.play();
addEventListener(Event.ENTER_FRAME,myFunction);
}
function myFunction(e:Event){
//LogFB.info('test1234'); here is the problem
// trace("is working!");
hi();
}
play_mp3('aasa','aaa');
function hi() {
trace("goooooddddd!"); //is working, I am using Flash CC
}
一切顺利!
答案 2 :(得分:-1)
尝试这个似乎没有任何错误
public function play_mp3(path:String,path1:String):void {
addEventListener(Event.ENTER_FRAME,myFunction);
var snd:Sound = new Sound();
snd.load(new URLRequest(path), new SoundLoaderContext());
channel = snd.play();
}
public function myFunction(e:Event){
LogFB.info('test1234'); }
即将enterframe事件放在代码中的第一件事,以检查它是否至少初始化它?