1,顯示容器:所有的容器都繼承自DisplayObjectContainer , DisplayObjectContainer 又繼承自DisplayObject;
2,想定義一個容器只要創建一個類,並使其繼承自DisplayObjectContainer 即可,想實現graphics功能,只要繼承Sprite類即可;
3,顯示對象的操作:添加,刪除,檢測,訪問,設置堆疊次序;
建立顯示對象:
var spr:egret.Sprite = new egret.Sprite();
spr.beignFill(0x009900);
spr.drawRect(0,0,100,100);
spr.endFill();
this.addChild(spr); //建立完后要添加顯示對象;
顯示列表是一個樹狀結構,spr的上一級就是this,也就是文檔類,文檔類是stage舞台的第一個對象;
刪除顯示對象:this.removeChild(spr);
4,顯示對象的注意點:
1)顯示對象獨立於顯示列表:當顯示對象被刪除后,顯示對象只是不再參與渲染,但是仍然在內存常駐;
2)顯示對象的坐標系是相對坐標系,而非絕對坐標系,就是相對於父級原點的位置;
3)多次添加顯示對象到顯示列表:同一個顯示對象無論被添加多少次,在屏幕上只會顯示一次;
例如:將一個顯示對象A添加到B容器中,又被添加到C容器中,則第二次添加A對象時C.addChild(A),是先從B容器上刪除A對象,然后再添加到C容器上;
4)刪除操作的注意點:
當刪除一個顯示對象時,該顯示對象必須有父級,也就是必須在顯示列表中;否則會報錯;
因此,每次刪除顯示對象前,都對其進行一次判斷;
if(spr.parent){
spr.parent.removeChild(spr);
}
5,深度管理:
每個顯示對象在顯示列表中都有一個深度值,就是堆疊次序,稱之為”z-次序‘’;
egret容器中的深度從0開始,第一個被添加的對象的深度值就是0;也即是位於容器的最底層,后加的顯示對象覆蓋在它上面;
添加/刪除指定深度的對象:
使用addChild()添加顯示對象時,,默認是按照次序一次堆疊,如果想要插入到指定深度處,使用容器.addChildAt(顯示對象,深度值)方法;
可以使用removeChild(spr)刪除顯示對象,也可以使用removeChild(深度值)來刪除指定的顯示對象;
6,訪問容器子對象:
1)通過獲取深度值獲取容器子對象:
容器.getChildAt(深度值);
2)通過name屬性獲取:
可以先為顯示對象添加屬性name:spr.name ="xxxx";
容器.getChildByName("xxxx");
6,輸入文本:
使用輸入文本的關鍵是設置輸入文本類型,TextFieldType.INPUT:
var tx : egret.TextField = new egret.TextField();
tx.type = egret.TextFieldType.INPUT ;
tx.width = 200;
tx.height = 100;
tx.x = 150;
tx.y = 100;
this._container.addChild(tx); //_container 是事先建立的顯示容器;egret.Shape;
7,多種樣式文本的組合方式:
JSON方式分段設置樣式:
interface ITextField{
text : string ;
style : ITextStyle;
}
var tx:egret.TextField = new TextField();
tx.textFlow = <Array<egret.ITextElement>>[{ text : "舉個例子" , style : {"size" : 10} } , {} ,{}]; //將文檔流轉成為元素的egret.ITextElement的數組