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