Egret 顯示容器


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的數組


免責聲明!

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



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