• addFrameScript 未公开的方法2009-08-25

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://crazyrabbit.blogbus.com/logs/45076425.html

    本文转自这里
    Flash AS3] addFrameScript 动态在时间轴上增加代码
    2009年03月06日 星期五 17:21

     

    addFrameScript是as3 MovieClip的藏方法,可以在指定帧上增加代码.

    用法:

    MovieClip.addFrameScript(帧号:uint,函数:Function,[帧号:uint,函数:Function]):void

    例子:

    1.在mc的第一帧上增加代码

    mc.addFrameScript(0,function(){trace("hi.bluewingmyth.cn")});

    2.在mc第一帧和第五帧增加代码

    mc.addFrameScript(0,output,4,output);

    function output(){

    trace("hi.bluewingmyth.cn");

    }

    3.取消mc第一帧和第五帧的代码

    mc.addFrameScript(0,null,4,null);

     

    以上摘自:http://www.51as.com/show.php?tid=90

     

    -------------------------------------------------------------------------------------------------------------

     

    在库里做了一个MC,是一个20帧的动画,想控制第一帧,和最后一帧添加代码stop();,可是又不想做帧上添加,想做class里添加,难住 了。回来我用“硕思”破解了下自己的代码(在帧上加代码),嘿嘿居然发现有这么个函数addFrameScript.然后自己对比了下代码,在baidu 查了下才知道这是个隐藏函数。

    // NON-DOCUMENTED (MANUAL ADDITION)
    //Attach a callback method to a frame. Note that this will replace any timeline code or
    // previously attached callback.
    // The callback method should not expect any parameter.

    // @param frame <uint> Target frame number (starting from 0).
    // @param notify <Function> Callback method to attach.
    //

    public function addFrameScript(frame:uint, notify:Function):void;

    从上表格内容仔细看,原来这是一个未曾公开的方法,译成中文大意是:附加一个回调函数到指定帧上。值的注 意的是这将替换任何时间轴代码或先前的附加回调函数。此回调函数无返回值。什么意思?先看第一个参数frame,明确说明这是一个目标帧数(索引值从0开 始),也就是用代码指定的第几帧;notify,回调函数,即当时间轴上的播放头播放到指定帧时所执行的指定函数,这个回调函数实际上是一个事件处理函 数。

    用法示例:

    舞台上有一个MovieClip,实例名为foo,当然这个foo是一段效果很炫的动画了~!当到达第300帧时,我要检测一下是否到达300帧,代码如下:

    foo.addFrameScript(19,gotoAndFun);

    function gotoAndFun():void

    {
    stop();
       return;
    }

    这里请务必注意:帧数的计算是从0开始~!

    再查相关资料,原来addFrameScript()还可以接收任意多组的参数:

    MovieClip.addFrameScript(0,gotoAndFun, 1,gotoAndFun, 2,gotoAndFun);

    也就是说可以同时指定多组触发事件,在1,2,3帧上同时指定触发的动作,如果有不止一个动作事件指定在相同的一个帧上,那么,只有后者的动作会被触发~!

    MovieClip.addFrameScript(0,frame1Method, 1,frame2Method, 2,frame3Method);

    如果要移除动作怎么做呢?很简单,回调函数为null即可,如下示:

    MovieClip.addFrameScript(0,null);

     



    收藏到:Del.icio.us