1,在egret中,視覺圖形都是由顯示對象和顯示對象容器組成的;
顯示對象:准確的說,就是在舞台上顯示出來的,包括能真實看見的圖形,文字,圖片,視頻等;也包括不能看見但真實存在的顯示對象容器;
一:顯示對象的等級結構:
在最上面的是舞台,舞台是最根本的顯示容器,是顯示樹結構的根本;
在egret中顯示對象分為兩大類:
1)包含顯示對象的顯示對象容器,簡稱為容器;
2)單純的顯示對象;
2,在egret中封裝了 7個顯示類:
DisplayObject:顯示對象基類,所有顯示對象都繼承自它;
DisplayObjectContainer:顯示對象容器接口,所有顯示對象容器均實現此接口;
Bitmap:位圖,用來顯示圖片;
3,顯示對象的基本概念:
egret中,坐標系從左上角開始:
橫軸方向,越向右,X值越大;向上為正;
縱軸方向,越向下,Y值越大;向下為正;
Shape:矢量圖類,可以使用其中的方法繪制圖形;
Sprite:輕量級顯示容器;
Stage:舞台類;繼承自Sprite類;
TextField:文本類;
TextInput:輸入文本類;繼承自TextField類;
4,使用顯示對象創建矩形的時候;
修改顯示對象的位置:可以使用x,y來修改矩形的位置;
透明度:alpha;
縮放變化:在x, y方向都進行縮放;
scaleX; //橫向縮放;
scaleY; //縱向縮放;
旋轉屬性rotation;
skewX:橫向斜切;
skewY:縱向斜切;
visible:是否可見;
x : x軸坐標
y: y軸坐標;
例:
var spr :egret.Sprite = new egret.Sprite();
spr.x = 100;
spr.y = 50;
spr.scaleX = 0.5; //縮放0.5倍;
spr.scaleY = 0.5;
spr.alpha = 0.4;
spr.rotation = 30; //旋轉30度;
5,錨點的操作:
錨點默認位於顯示對象的左上角;
當設置顯示對象的位置時,默認是以錨點為參照物的,但是錨點相對於對象的位置也是可以改動的;
6,顯示對象的轉化坐標的方法:
globalToLocal():將舞台坐標轉為本地坐標;
localToGlobal():將本地坐標轉為舞台坐標;
7,事件的執行流程:
注冊偵聽器(addEventListener()),發送事件,執行事件,移除偵聽器(removeEventListener());
8,Event :是所有事件的基類;所有事件都應繼承自它;
使用Event時,有幾個屬性和參數需要注意:
1)首先是構造函數中的幾個參數:type,bubbles,cancelable;
type指事件的類型,常用的事件類型有,ADDED, COMPLETE等;
bubbles指事件是否參與事件流的冒泡階段;
cancelable指是否取消Event對象;
另外還要注意的屬性是target,表示要事件的目標,也就是事件的發送者,
2)自定義事件:
游戲中常常會使用一些自定義事件:
例:
class DateEvent extends egret.Event { public static DATE:string = "約會"; public _year:number = 0; public _month:number = 0; public _date:number = 0; public _where:string = ""; public _todo:string = ""; public constructor(type:string, bubbles:boolean=false, cancelable:boolean=false) { super(type,bubbles,cancelable); } }
自定義事件類很簡單,僅僅是繼承自egret.Event類,然后有個自己的事件的靜態屬性 DATE ,另外還有一些事件的數據;如日期year,month,date,地點等;
9,事件偵聽器:就是事件的處理者,接受事件的信息,並在接受后執行相應的代碼;
事件的偵聽器必須是一個函數,事件的發送者必須是event.EventDispatcher類或其子類的實例;
只有事件發送者可以偵聽事件,並可以注冊偵聽器;
偵聽事件分為兩個部分:
1)建立偵聽器:偵聽器可以是獨立的函數,也可以是某個對象()實例)的方法;但是這個偵聽器必須有一個參數,參數必須是event類實例或其子類的實例,並且返回值必須為空(void);
listenerName(evt : Event) : void{ // 。。。。。。}
2)注冊偵聽器:使用addEventListener將相應事件分配給偵聽器;
注冊偵聽函數的定義:
public addEventListener(type:string, listener:Function, thisObject:any, useCapture:boolean = false, priority:number =
0);
前三個參數是最常用的;
type:表示事件類型;
listener:用來處理事件的偵聽器;
thisObject:它比較特殊,一般寫this;
3)注冊偵聽器和移除偵聽器:
二者總是成對出現的;
注冊偵聽器:事件發送者.addEventListener(事件類型,偵聽器,this);
移除偵聽器:事件發送者.removeEventListener(事件類型,偵聽器,this);
4)檢測偵聽器:檢測某個事件發送者是否注冊了偵聽器;
兩個方法可以使用:hasEventListener()或者是willTrigger(); 執行效果相同,都是判斷事件發送者是否注冊了某個類型 的事件;如果事件類型被注冊過,返回true,否則返回false;
事件發送者.hasEventListener(事件類型);
10,TouchEvent的啟動開關:
啟動開關touchEnabled指定此對象是否接受觸摸或其他用戶的輸入。默認值為true,表示默認情況下,任何DisplayObject都會接受觸摸事件或其他用戶輸入事件;若設置為false,則不接受任何觸摸事件,子級
也不會受到影響;要更改顯示列表上的所有子級的touchEnable行為,請使用DisplayObjectContainer.touchChildren;
顯示過程中,如果某些對象不再需要偵聽touchEvent,則使用 事件發送者.touchEvent = false;取消