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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值