Egret --視覺編程,顯示對象,事件


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;取消

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM