当前位置: 代码迷 >> Web前端 >> ActionScript 三 Tip of the Day
  详细解决方案

ActionScript 三 Tip of the Day

热度:664   发布时间:2012-10-28 09:54:44.0
ActionScript 3 Tip of the Day

今天看到aw的blog上好象要翻译AS3 Tip of the Day 才想起来偶也看过这个,但是后来没坚持翻下去,也就没发出来,正好最近这一系列又更新了一些关于flash cs3相关的内容,所以还是打算继续把他看完,以下有些是简译,有些是直译,有些根本不是翻译,是摘录或是看完后用我自己的话组织的,方便我自己查看,想看完整翻译的还是等看aw的吧,偶的英语水平跟他差远了
[1b]General:[/1b]
[1b]1. 动态改变帧频: [/1b]
?// change frame rate to 12 fps:
?stage.frameRate = 12;
[1b]2. Abstract Classes [/1b]
as3不支持抽象类,但有几个内置的抽象类
DisplayObject
InteractiveObject
DisplayObjectContainer
Graphics
as3中这意味着不能实例化这些类,也不能继承他们 ,以下为错误操作:
// 错误1
var myObj:InteractiveObject = new InteractiveObject(); // ERROR
// 错误2
package {
?import flash.display.DisplayObject;
?public class MyDisplay extends DisplayObject{
?public function MyDisplay (){
?// ERROR
?}
?}
}
[1b]3. Deep Object Copies with ByteArray [/1b]
as3中很容易使用(flash.utils.ByteArray)类来进行对象的深拷贝,深拷贝不只拷贝引用,而是拷贝整个相关对象,
例如一个array里包含一个object引用,这个object也将被拷贝
注意:这个方法通常用来拷贝一般的object
拷贝函数:
function clone(source:Object):* {
?var copier:ByteArray = new ByteArray();
?copier.writeObject(source);
?copier.position = 0;
?return(copier.readObject());
}
使用方法:
newObjectCopy = clone(originalObject);
[1b]4. Determine Instance Class or Superclass [/1b]
as3中可以很容易的获取某个实例所属的类和父类的类名,使用这两个方法
getQualifiedClassName (flash.utils.getQualifiedClassName).
getQualifiedSuperclassName (flash.utils.getQualifiedSuperclassName)
var sprite:Sprite = new Sprite();
trace(getQualifiedClassName(sprite)); // "flash.display::Sprite
trace(getQualifiedSuperclassName(sprite)); // "flash.display::DisplayObjectContainer"
你甚至可以由字符串获得类的引用,使用这个方法
getDefinitionByName (flash.utils.getDefinitionByName).
getDefinitionByName("flash.display::Sprite")); // [class Sprite]
[1b]5. Multiple Arguments in trace() [/1b]
as3
trace(value1, value2, value3);
as1,as2
trace([value1, value2, value3]);
[1b]6. Loading Text and XML with URLLoader [/1b]
var loader:URLLoader;
// ...
loader = new URLLoader();
loader.addEventListener(Event.COMPLETE, xmlLoaded);
var request:URLRequest = new URLRequest("file.xml");
loader.load(request);
//...
function xmlLoaded(event:Event):void {
?var myXML:XML = new XML(loader.data);
?//...
}
[1b]7.Get Sound Spectrum Information[/1b]
(flash.media.SoundMixer)类的computeSpectrum静态方法可以把正在播放的声谱信息转成ByteArray,由此你可以想到办法把声谱可视化显示出来
// play sound...
var spectrumInfo:ByteArray = new ByteArray();
SoundMixer.computeSpectrum(spectrumInfo);
// spectrumInfo is now a byte array with sound spectrum info
具体可视化的方法可以看swfdong那里的教程 :)
[1b]8. Garbage Collection: Reference Counting & Mark and Sweep[/1b]
垃圾回收机制包含两个关键:
(1)Reference Counting (引用数) :
引用数就是在内存中引用同一个object的变量多少,每增加一个变量引用该object,引用数就+1
var a:Object = new Object(); // new Object in memory given reference count of 1
var b:Object = a; // Object now has reference count of 2
无论什么时候,当没有变量引用该object的时候,垃圾回收就会把他们回收了
delete a; // Object has reference count of 1
delete b; // Object has reference count of 0, removed from memory
注意delete只能删除非成员变量,而且删除的是引用该object的变量而不是将object从内存中删除,那是垃圾回收器要做的事
本文转自:http://www.5uflash.com/flashjiaocheng/Flash-as3-jiaocheng/1842.html
  相关解决方案