使用URLLoader载入文本和XML-ActionScript3 Tips and Tricks

本文是ActionScript3 Tips and Tricks系列阅读笔记之一Loading Text and XML with URLLoader,查看所有的笔记

在AS3以前的版本中,要载入外部文本,可以使用LoadVars类和XML类。但是在AS3中,这些功能被移到了一个类中,这就是URLLoader(flash.net.URLLoader)类,这个类与LoadVars很相似。而AS3的XML类中,已经没有了载入外部XML文件的功能。我们可以使用URLLoader类获取外部的文本,并将其解析成普通文本或者XML对象。

就像LoadVars类一样,URLLoader类也有一个load()方法载入外部源的数据。这个方法允许一个URLRequest类的实例(而不是一个字符串)作为它的为一个参数。你可以使用URLLoader的事件决定载入完成之后该做什么。载入成功之后,URLLoader中的data属性将包含载入的文本值。

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);
    //...
}

trace的多参数支持-ActionScript3 Tips and Tricks

本文是ActionScript3 Tips and Tricks系列阅读笔记之一Multiple Arguments in trace(),查看所有的笔记

trace函数可以在Flash的输出面板(Flex Builder的Console面板)中显示信息。在ActionScript1和ActionScript2中,trace函数只能接收一个参数,而在ActionScript3中,trace函数可以接收多个参数:

trace(value1, value2, value3);

实际上,在ActionScript1/2中也可以做到。只需要使用数组:

trace([value1, value2, value3]);

ZRong注:实际上,以上的两段代码的显示结果是不同的,ActionScript3 的 trace ,会将每隔参数的值以空格分开,而ActionScript1/2使用数组作为参数,显示的结果是以逗号分隔的。

获取实例的类或超类名-ActionScript3 Tips and Tricks

本文是ActionScript3 Tips and Tricks系列阅读笔记之一Determine Instance Class or Superclass,这里是原文地址

在ActionScript3中,可以使用getQualifiedClassName函数( flash.utils.getQualifiedClassName)获取实例的类名:

var sprite:Sprite = new Sprite();
trace(getQualifiedClassName(sprite)); // 输出"flash.display::Sprite"

还可以使用getQualifiedSuperclassName函数 ( flash.utils.getQualifiedSuperclassName ) 获取超类的名称:

// 输出"flash.display::DisplayObjectContainer"
trace(getQualifiedSuperclassName(sprite)); 

继续阅读获取实例的类或超类名-ActionScript3 Tips and Tricks

使用ByteArray进行对象深度拷贝-ActionScript3 Tips and Tricks

本文是ActionScript3 Tips and Tricks系列阅读笔记之一“Deep Object Copies with ByteArray”,这里是原文地址

使用ActionScript3中新提供的 ByteArray类(flash.utils.ByteArray)可以创建一个对象的深度拷贝。“深度”的意思是可以拷贝一个对象(object)的所有引用,这意味着如果你拷贝一个包含对象的数组,那么数组中的对象也被拷贝(而不是引用)。下面是一个clone方法:

function clone(source:Object):* {
var copier:ByteArray = new ByteArray();
copier.writeObject(source);
copier.position = 0;
return(copier.readObject());
}

注意:你需要先导入 flash.utils.ByteArray

要使用这个方法,可以使用下面的代码:

newObjectCopy = clone(originalObject);

虽然这个方法可以深度拷贝你的对象,但是它不会一同拷贝类的类型定义。所以,如果查需要拷贝一个MyClass实例,拷贝出的对象将不在是MyClass类型。这个方法最好在普通对象上使用。 继续阅读使用ByteArray进行对象深度拷贝-ActionScript3 Tips and Tricks

抽象类-ActionScript3 Tips and Tricks

本文是ActionScript3 Tips and Tricks系列阅读笔记之一,这里是原文地址

很不幸,ActionScript3不支持抽象类(abstract classes),抽象类不能被实例化,并且只能扩展一次。所以,你不能在Flash中创建自己的抽象类。让我们先来了解一下Flash Player中内置的抽象类:

对于抽象类来说,你不能使用new关键字来建立它们的实例。

ActionScript 代码:

var myObj:InteractiveObject = new InteractiveObject(); // 错误

当然,你也不可以继承它们并试图建立子类的代码。

ActionScript 代码:

package {
    import flash.display.DisplayObject;
    public class MyDisplay extends DisplayObject{
        public function MyDisplay (){
            // 错误
        }
    }
}

不过,你可以继承内部抽象类的子类。例如,如果需要继承DisplayObject,你可以继承Shape类。Shape就是DisplayObject的子类。

实时改变影片帧频-ActionScript 3 Tips and Tricks

由于ActionScript 3 Tip of the Day(ActionScript3 Tips and Tricks)一文原帖地址实在太慢,准备从今天起,慢慢将原帖转到Blog上,以免以后哪天原帖不能访问了,我还可以拿来参考。


本文是ActionScript3 Tips and Tricks系列阅读笔记之一Change the frame rate of your movie,这里是原文地址

实时改变影片帧频(Change the frame rate of your movie)

使用ActionScript3中的Stage类,可以动态改变影片的帧频。

Stage类可以通过主影片中sprite或影片剪辑的stage属性访问(也可以通过位于同一安全沙箱其他影片中的相关属性访问)。stage对象有一个frameRate属性,可以包含0.1至1000之间的任何值。改变这个属性的值,可以让Flash Player实时改变被播放的影片的帧频。 继续阅读实时改变影片帧频-ActionScript 3 Tips and Tricks