论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash AS教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

有关mouseStop事件功能的实现

文章类别:Flash AS | 发表日期:2009-8-8 17:33:27

有关mouseStop事件功能的实现

先推荐一个鼠标双击的实现,虽然Flash as3已经有了,但是我觉得这种实现非常经典。
2个全局变量,一个记录每次鼠标up时的getTimer,另外一个记录双击间隔(可设置)
每次mouse down的时候 用获取getTimer和全局的up值相减 结果和间隔值对比 即可发布双击事件 非常经典

现在我想实现一个mouseStop的事件 和mouseMove相反 设置一个stopTime 然后当鼠标停留时间超过此致时 发布mouseStop事件

代码如下:
//
// Copyright
// 延迟管理器
//
package managers
{
    import flash.events.TimerEvent;
    import flash.utils.Dictionary;
    import flash.utils.Timer;
   
    public class DelayManager
    {
        //记录所有已经开始延迟处理的方法   以保证在这个处理过程中不会被垃圾回收回收掉
        private static const functions:Dictionary = new Dictionary ( true );
       
        /**
         * 延迟调用
         */
        public static function delayCall ( secs:Number , fun:Function , overwrite:Boolean ,  params:Array = null ):DelayManager {
            if ( secs > 0 ) {
                return new DelayManager ( secs , fun , overwrite , params );
            } else {
                return null;
            }
        }
        /**
         * 使一个延迟处理失效
         */
        public static function destory ( target:DelayManager ):void {
            if ( functions [ target._fun ] == null ) return;
            target._timer.stop ();
            target._timer.removeEventListener ( TimerEvent.TIMER , target._timerHandler );
            functions [ target._fun ] = null;
        }
        
        
                
        /**计时器*/
        private var _timer:Timer;
        /**被延迟调用的函数*/
        private var _fun:Function;
        /**参数*/
        private var _params:Array;
        /*Constructor*/
        public function DelayManager( secs:Number , fun:Function , overwrite:Boolean , params:Array = null )
        {
            const needOverwrite:Boolean = overwrite && functions [ fun ];
           
            if ( needOverwrite ) {
                const manager:DelayManager = functions [ fun ] as DelayManager;
                manager._timer.reset();
                manager._timer.delay = secs * 1000;
                manager._timer.start();
               
            } else {
                _timer = new Timer ( secs * 1000 );
                _fun = fun;
                _params = params;
                functions [ _fun ] = this;
                _timer.addEventListener( TimerEvent.TIMER , _timerHandler );
                _timer.start();
            }
        }
        private function _timerHandler ( event:TimerEvent ):void {
            if ( _params ) {
                _fun.apply ( null , _params );
            } else {
                _fun ();
            }
            destory ( this );
        }
    }
}

视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058