在AS3.0中,addEventListener("allTransitionsInDone",fuc),allTransitionsInDone属于哪种类型的Event?
allTransitionsInDone是在哪里定义的呢,总不能我随便写个String都可以吧
多谢
楼下说的我明白。我上面提到的函数是可以直接在flash sc4中运行的,也就是说是AS3中定义过的。
请看实例:
http://www.webjx.com/flash/actionscript-21361.html
在transition结束后,TransitionManager会接收到allTransitionsInDone消息。例子中并没有allTransitionsInDone的自己定义。我把代码复制到flash cs4 中(AS3),可以达到效果。google中也找不到答案。
多谢大家的帮助 展开
是的,在侦听器的第一个参数里面 这个"String" 是可以随便提供的。
如果你是这样写("nihao" , fuc ),这样是不会产生错误的,这个跟定义没有关系,因为它只是给函数提供的参数。
就好比这样:
init( "hollo" ); //这个与侦听器里面的参数是一样的道理。
function init( str:String ){
trace(str);
}
它不会因为它未定义而出错,最多只会因为它未发送这个事件而不触发事件而已。
那么因为未定义而出错的情况是这样的:
//var str_holl:String = "nihao";
init( str_hollo );
function init( str:String ){
trace( str );
}
这个str_hollo如果未定义话,就会报错!那么像我们通常看到的这样的侦听器
addEventListener( Event.ENTER_FRAME , runhandler );
前面所提供的参数实际上是Event类里面的一个String类型的变量。
那么楼主所提到的这个"allTransitionsInDone"呢,我也是在它导入的这两个包里面找遍了,没有发现这个事件,也不知道是什么原因。但是例子中写的比较清楚了function animationComplete (e:Event){} ,这说明它是属于Event类型的事件。而且我也在Event类里面所提供的属性里面查找了,也没有发现"allTransitionsInDone"。那说明有可能是TransitionManager类里面定义了这个事件而并未提供。处于好奇,那么我直接打开了TransitionManager类查看,发现它是直接发送了allTransitionsInDone这个事件,而并没有专门定义(如图所示)。 这样的话,楼主的疑问包括我的疑问也因此解开了吧!
例如;
创建一个事件类的实例:var a:Event=new Event("hello",true),
然后将这个事件实例发送出去:dispatchEvent(a)。
最后在需要的地方写一个侦听器,等待那个事件被发送过来:addEventListener("hello",function)
你想知道的就是fuc的参数类型写哪种而已,你可以写Event,它是所有事件的父类。楼主的代码明显是一个自定义事件,要触发这个事件恐怕必须要手动写dispatchEvent了