[研究] AS3的display object
難怪AS3會比AS2效能快上十倍以上
因為在display object這個部份就已經非常精細地分類了
像是以前做靜態物件時 如果用MovieClip是一種浪費
因為根本不會用到play(), stop(), gotoAndPlay(), gotoAndStop(), ...等method
而且_currentFrame, _totalFrame這些property根本沒意義
這在消耗CPU和記憶體的資源有非常大的影響
另外AS3已經移除createEmptyMovieClip(), createTextField()這兩個method
要創造一個新的display object,就用一般的var和new statement
然後修改完畢所有的property(諸如x, y, scaleX, scaleY, rotation, ...etc)
再指定要裝這個display object的container(容器)
使用container的addChild() method來增加這個container的child
如此該display object才會真正顯示在螢幕上
此機制的用意就是要在 display object還是數值資料的時候就先搞定一些設定
等到準備完畢才顯示到螢幕上,大幅增加AVM2的執行效能
<ex>var circle:Shape = new Shape();
circle.graphics.lineStyle(0, 0x000000);
circle.graphics.beginFill(0x990000);
circle.graphics.drawCircle(0, 0, 100);
circle.graphics.endFill();
stage.addChild(circle); //這個時候才真正顯示到螢幕上
AS3的display object分類大致如下
(我只列出常用到的display object)
DisplayObject┬Shape
│
└InteractiveObject┬TextField
│
└DisplayObjectContainer┬Loader
│
├Sprite─MovieClip
│
└Stage
※藍字為常用到的display object,白字為類別名稱
以下是一些display object的簡單功能介紹
Shape 基本上只有繪圖的機能(透過使用它的graphics property)
<ex>var myShape:Shape = new Shape();
myShape.graphics.lineStyle(3, 0x000000);
myShape.graphics.drawCircle(0, 0, 100);
TextField 能夠處理文字欄位,跟AS2差別不大
可以用TextFormat class來修改文字外觀
<ex>var myTextField:TextField = new TextField();
myTextfield.text = "testing...";
var myTextFormat:TextFormat = new Textformat();
myTextFormat.size = 50;
myTextFormat.color = 0x990000;
myTextField.setTextformat(myTextFormat);
Loader 可以拿來載入外部媒體,諸如圖檔& .swf檔案
<ex>var myLoader:Loader = new Loader();
var url:String = "potatochips.jpg";
var request:URLRequest = new URLRequest(url);
myLoader.load(request);
Sprite 相當於沒有時間軸的MovieClip,可以拿來裝其他display object
本身也有graphics property,所以有繪圖機能
<ex>var mySprite:Sprite = new Sprite();
mySprite.addChild(circle_shape);//裝其他的shape
MovieClip 這個就不用我再多做解釋了吧...XD
Stage 基本上就是_root的性質,無法直接access到它
反倒是所有display object的stage property指的都是它
<ex>myMovieClip_mc.stage.addEventListener(......);
以上,等到有更多的研究成果再po上來吧 :p
--
CJ Cat = Croa'J Cat = Cockroach Cat = 西街凱特 = 蜚蠊貓 = 蟑螂貓
Gallery http://cjcat2266.deviantart.com
ptt2 Board CJWorkshop - 阿多比閃光(Adobe Flash)研討區
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.89.24
推
10/09 00:24, , 1F
10/09 00:24, 1F
推
07/15 14:43, , 2F
07/15 14:43, 2F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
Flash 近期熱門文章
PTT數位生活區 即時熱門文章