Egret04-對象容器和顯示列表介紹

一、容器

1、顯示容器是用來裝放可見對象的,所有容器都繼承DisplayObjectContainer類,該類繼承自 DisplayObject.也就是所有容器都繼承 DisplayObject.容器類DisplayObjectContaine具有以下四類操作:

添加、刪除子對象
訪問子對象
檢測子對象
設置疊放次序

2、常用的容器有Sprite,它繼承了 DisplayObjectContainer,而且添加了Graphics的功能。開發者可以自定義一個類繼承DisplayObjectContainer或Sprite來實現一個容器:

/**  自定義一個容器類,並在容器內畫一個矩形**/ 
class MySprite01 extends egret.Sprite
{
    public constructor()
    {
        super();
        this.drawGrid();
    }

    private drawGrid(){
        this.graphics.beginFill( 0x00ffff );
        this.graphics.drawRect( 0, 0, 100,100 );
        this.graphics.endFill();
    }
}

容器運行效果圖:
在這裏插入圖片描述

二、顯示列表

我們先思考一個問題:上面的MySprite01容器類和上一章節中的GridDemo01矢量圖對象有什麼區別?
要解決這個疑問,需要了解顯示列表的概念:顯示列表的作用是管理容器和容器中的對象,對象處於顯示列表中,則可見,從列表中移除則不可見。顯示列表由Egret內部維護,開發者只需關注自己創建的對象和容器即可。
關於顯示列表,可以直觀看成一個樹形結構,最上層的stage對象就是“舞臺”,它是Egret顯示架構中最根本主顯示容器,下圖是對顯示列表的形象拆解。
在這裏插入圖片描述
另外,顯示的邏輯結構如下,我們上一章節中的GridDemo01是一個矢量圖對象,它是加入到Stage中了,而且不可以再加入其它子顯示對象。本章節的MySprite01是一個容器,它可以擁有更多的子顯示對象。
在這裏插入圖片描述
我們實現以下代碼,畫一個簡單的GridDemo01圖形,並將圖形對象加入到MySprite01容器中,這個時候,GridDemo01圖形對象就不再是放置到stage根容器中了,而是套在MySprite01容器中。

        var gridDemo01:GridDemo01 = new GridDemo01();
        var  mySprite01:MySprite01 = new MySprite01();
        mySprite01.addChild(gridDemo01);
        this.addChild(mySprite01);

在這裏插入圖片描述

END.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章