解决ie下flash中scrollpane需要点击激活问题,可自定义滚动速度

效果见:demo

花了我两天终于研究出来了,记录下来,以备以后用。

大概思路:

利用js获取页面是向上还是向下滚动,我的机器的event.
wheelDelta=120,可以修改这个值,然后将页面滚动距离通过js传递给flash(as3),从而控制scrollpane的滚动速度。(实际上这个时候flash中scrollpane的滚轮事件还没有触发,但是滚动条的位置已经随js传进来的值改变了)

要点总结:

1.
如果拖动了scrollpane中的滚轮按钮,则会触发flash中的滚轮事件,这个时候,为了保正flash里面的滚动速度和页面给的滚轮速度一样,必须将滚动的值sp.
verticalScrollPosition传递给页面,即重新给页面上的滚动距离赋值,然后再传回给flash.

2.
scrollpane的点击事件对该组件上的拖动bar是无效的,就是说,如果你只是点击拖动的bar,不会触发click事件,这种情况下,必须找出拖动的bar对应的事件,经过反复实践,我发现bar是sp.
getChildAt(1),这是ScrollBar类型的一个对象,对该对象侦听MouseEvent.
MOUSE_DOWN/UP事件,可以得到拖动时候的sp.
verticalScrollPosition值,然后就可以将该值传递给页面进行相应的处理

3.
当在创作环境以及ie浏览器中测试mouseWheel事件时候,由于创作环境或者ie的快捷键会屏蔽播放器的快捷键,需单击对象激活后mouseWheel事件才有效,但在播放器独立测试时,可以直接使用mouseWheel事件。

firefox浏览器不存在这个问题,sign~.
发现我现在越来越喜欢firefox浏览器了!!!!

as3添加帧脚本

通常我们在flash ide中开发flash应用程序的时候,经常会在帧上添加脚本语言,不过这样做有一个缺点就是不便于对脚本的维护管理,特别是在flash 6以前,这种现象尤为突出。在AS3 中,我们可以实现通过actionscript来添加帧 脚本,不过这里面用到了一个未公开的方法 addFrameScript,其使用:
MovieClip. addFrameScript(frame:uint,notify:Function);
其中frame参数是从0到totalframe-1的整数,notify为你要添加的脚本 的函数 名。
如果想去除脚本程序可以用MovieClip. addFrameScript(frame:uint,notify:Function,false,false);或者MovieClip. addFrameScipt(frame:uint,null);

]]>