首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

关于as3的一些小结

2012-12-21 
关于as3的一些总结1.载入外部xml方法 注意点:如果将flash放在html中,as中xml的路径都是相对html的路径 2.

关于as3的一些总结
1.载入外部xml方法
注意点:如果将flash放在html中,as中xml的路径都是相对html的路径
2.鼠标跟随事件
注意点:用stage.addEventListener(MouseEvent.MOUSE_MOVE,FollowMe2);// FollowMe2跟随事件方法名,FollowMe2方法中必须加上event.updateAfterEvent();
这样鼠标可以更流畅
3.动态文本遮罩
注意点:如果动态文本无法正常显示设置过滤器
var txt_blur:BlurFilter = new BlurFilter(0, 0, 0);
intro.filters=[txt_blur];
设置动态遮罩:contentMc.mask=maskMC;
4.跳帧时无法读取帧里的元件
注意点:flash的跳帧延时问题,可以用Event.ENTER_FRAME事件监听是否读取到元件,读取到后移除监听(不知道是否有更好办法)
5.关于监听带参
通常设置一个事件都是
元件.addEventListener(事件名,事件处理方法);
在这里无法将这个事件的一些设置参数传进处理方法中
在这里分享一个工具类EventDpMediator.as

package CYPL.utils { import flash.events.Event; import flash.events.IEventDispatcher; import flash.utils.Dictionary; public class EventDpMediator {   private static var eventObj : Object;     private var  _dispatcher : IEventDispatcher;   /**    * @dispatcher 目标对象    */   public function EventDpMediator(dispatcher : IEventDispatcher) {    _dispatcher = dispatcher;    eventObj = {};   }   /**    * 注册事件    * @eventType 事件类型    * @handler 响应方法    * @arg 参数对象    */   public function addEventListener(eventType : String,handler : Function,arg : Object = null) : void {    //trace("addEventListener:::", eventType)    removeEventListener(eventType, handler);    if(eventObj[eventType] == undefined) {     eventObj[eventType] = new Dictionary;     eventObj[eventType]["count"] = 0;    }    eventObj[eventType]["count"]++;    _dispatcher.addEventListener(eventType, eventObj[eventType][handler] = handlerX.call(null, handler, arg));   }   /**    * 删除事件    * @eventType 事件类型    * @handler 响应方法    */   public function removeEventListener(eventType : String,handler : Function) : void {    if(!eventObj[eventType])return;    var __handler : Function = eventObj[eventType][handler];    if(__handler == null)return;    //trace("removeEventListener", eventType);    _dispatcher.removeEventListener(eventType, __handler);    delete eventObj[eventType][handler];    if(eventObj[eventType]["count"]-- == 0) {     delete eventObj[eventType]["count"];     delete eventObj[eventType];    }   }   private function handlerX(handler : Function,arg : Object) : Function {    var This : EventDpMediator = this;    return function(e : Event): void {     handler.call(null, This, e, arg);    };   } } } 

使用例子:
/** * @author:CYPL * @用途:EventDispatcher的中介类,方便进行传递参数 * @date:2009.7.14 * @example: <============================================================ import CYPL.utils.EventDpMediator; var ms=new EventDpMediator(stage); ms.addEventListener(MouseEvent.MOUSE_DOWN,handler,{o:3}); ms.addEventListener(MouseEvent.MOUSE_UP,handler,4); ms.addEventListener(MouseEvent.CLICK,handler); //参数m:中介对象,e:事件对象,arg参数对象 function handler(m:EventDpMediator,e:Event,arg:*=null) { switch (e.type) { case MouseEvent.MOUSE_DOWN : trace("MouseEvent.MOUSE_DOWN:",arg.o); break; case MouseEvent.MOUSE_UP : trace("MouseEvent.MOUSE_UP",arg); break; case MouseEvent.CLICK : trace("MouseEvent.CLICK:",arg); break; } //handler内部可以通过第一个参数中介对象来remove m.removeEventListener(MouseEvent.MOUSE_DOWN,handler); } //外部可以直接用中介对象来remove ms.removeEventListener(MouseEvent.MOUSE_UP,handler); ===========================================================> */ 


转自http://www.iteye.com/topic/605088

热点排行