Flashmx2004系列教程〈三〉ActionScript2.0
随着FLASHMX2004的推出,Macromedia公司推出了一种新的脚本类型称为as2,在要教程中我们将要了解AS2的新特性。新的面向对象的模型以及如何使AS1的脚本过度到AS2。
为什么我们需要一种新的脚本语言。
如果你只是做一些简单的动画是不需要用一种新的脚本语言的,其实有许多项目是不需要脚本语言的。如果你真的不需要使用脚本语言那这个教程将是一个很短的教程,现在你就可以结束了。:)
如果你是一名开发人员,在开发一些比较复杂的项目,那么AS1就显得有些力不从心,或者不能胜任。对于使用主流语言如java,c++,c#开发程序的程序员来说AS1是很怪的。他们是要走一些弯路来学习AS1特别是在面向对象编程时。
在as2中这些程序员将发现许多熟知的语法,AS2象JAVA。JSCRIPT.NET和javascript 2.0的程序员将感觉更好,因为AS2的语言基础来自于ECMASCRIPT EDITION 4.AS2可以使程序员写出更健状的程序,也可以吸引更多的程序员来学习FLASH。
好,你可能并不开发程序,那你喜欢开发游戏吗。或者是开发交互式的展示。好消息是AS2为我们开发这些提供了很有力的支持。
如果你对学习AS2没有兴趣,也不用担心。因为macromedia保留了AS1语法。你只是不能掌握这种语言的新特性而已。实际上在最后的编译过程中AS2和AS1都将被编译为相同的bytescode。这么做的原因大多是为了兼容FLASH6。ok.下面我们将继续学习。
ActionScript 2.0--私有或保护
在AS2中需要注意的一件事是私有属性。就象JAVA一样,私有成员意味着只有类自身可以访问。而子类却不可以访问,包括是在同一个类路径或包内。就象其它语言一样私有属性多半是为了起到保护作用。
由于这种特性只在编译时才会生效,一件非常重要的事情是你必须确保编译器能正确的获得私有的方法和属性。因此注意对你的实例名使用严格的类型指定,如下我们声明一个属性为私有属性:
class PrivateMemberClass{
private Var privateProp:String="I am a private property";
}
这个私有属性名为privatProp.当你的实例名没有用严格的数据类型指定时是可能被实例访问。
var instance=new PrivateMemberClass();
trace(instance.privateProp);
此时将会输出“I am a private property".
但是如果你使用的严格的数据类型指定就会出现编译错误。
如:var instance:PrivateMemberClass=new PrivateMemberClass();
trace(instance.privateProp);
此时就会出现编译错误。
这是许多人常有错误,总会问为什么私有属性可以被实例访问,现在你知道了。
ActionScript 2.0--继承
正如前面提到过的。继承对于OOP编程是很重要的尽管它不是绝对的需要。它用来定义子类与超类之间的关系。AS2为实现这一目的设置了一个新的关键词:extends.在上一例中的Math2中我们已经使用的了extends这一关键字继承Math类。它还是比较简单的。
在构造函数时首先应注意的是super()关建字。它的作用是调用超类的构造函数,如果你之前没有在超类中构造函数那么FLASH会自动生成一个空的构造函数。
值得欣慰的是许多BUG在新版的flash player7中已经被修复。但在FLASHPLAY6仍有bug的问题,如果你不太清楚,可能查看AS1中有关继承bug的相关列表文章。
如果你想要从子类传递参数给你的超类,你应确保在你的超类中已有了这些参数的声明。否则你会发现为什么只有部分的参数被传递。如我们要创建一个子类名为Child,它继承自他的父类。我们应在构造函数中这样写:
class Child extends Parent {
private var fName:String = "";
public function Child(lname:String, fname:String) {
super(lname);
// continue Child's constructor code
fName = fname;
}
}










