作者cjcat2266 (CJ Cat)
看板Flash
标题[研究] AS3的display object
时间Mon Oct 8 23:10:46 2007
难怪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
│
└I
nteractiveObject┬
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
1F:推 Jerrynet:还有要注意stage和Stage......上次用Flex被搞得团团转... 10/09 00:24
2F:推 killswitch:推! 07/15 14:43