工程家园's Archiver

psheu 发表于 2008-9-24 14:58

ActionStript3.0 特性介绍

ActionStript3.0 特性介绍
ActionScript 是针对 Adobe Flash Player 运行时环境的编程语言,它在 Flash 内容和应用程序中实现了交互性、数据处理以及其它许多功能,ActionScript 是由 Flash Player 中的 ActionScript 虚拟机 (AVM) 来执行的。ActionScript代码通常被编译器编译成“字节码格式” ,有点类似 java 的处理和运行机制。变过 C#,Java和javascript程序的朋友,肯定能在 ActionScript 中找到这些语言的影子。
以下是Actionscript的基本特性介绍。具体完整的学习,还是需要找找资料。例如,《ACTIONSCRIPT 3.0权威指南》[url=http://www.china-pub.com/208958]http://www.china-pub.com/208958[/url]
《FLASH/FLEX ACTIONSCRIPT 3.0交互式开发详解:语法基础、典型应用、视频网站实战》[url=http://www.china-pub.com/38096]http://www.china-pub.com/38096[/url]
1. 内置命名空间和自定义命名空间
四个内置修饰符:
public :对所有代码可见
private: 只对类内部可见
internal :只对定义所在的同一包内可见
protected :对同一包以及不同包的子类可见

自定义命名空间:使用关键字namespace定义命名空间,声明属性和方法时,应用命名空间。
AS 代码:
Namespace testSpace="org.blogjava.jm/ testSpace ";
testSpace myfunction2():void{}
调用使用 use 关键字打开命名空间
use mySpace2;
myfunction2();

2. Local 变量特点
与java不同的是,在as3中,变量没有块级作用域(即两人大括号中间),如果在一个块内声明了一个变量,比如一个for循环内声明了一个变量,它在该代码所在整个函数内都是可访问的。
function myFunction():void{
for(var i:int=0;i<5:i++){
var last:int = i;
}
trace(last);
}

last 在 for 中定义但可以在 for 块外面访问到,个人觉得这样设计欠妥,尽管很方便。
3 Dynamic 类
Object 类本身就是动态类,当然也可以用 dynamic 关键字来声明一个类,所谓动态就是在运行时可以对类追加属性和方法。
dynamic class Protean{}
var myProtean:Protean = new Protean();
myProtean.name = "jack.wang";
myProtean.password = 3;
trace(myProtean. name , myProtean. password );
定义函数的两种方式:函数语句和函数表达式
//函数语句声明
Function fun1():void{}
//函数表达式声明
var fun2:Function = function():void{}
函数表达式声明的函数是不能够被垃圾回收的,必须显示的调用 delete 命令。
var t:Test = new Test(); //t是动态类Test的一个实例
t.funt = function(){};//把一个函数声明为t的一个属性
delete t.funt; //删除刚才新增的函数,我们刚才声明的函数也被回收了

5 在as3中也有arguments对象,功能基本上和javascript中的一样。
arguments 对象是一个数组,其中包括传递给函数的所有参数,arguments.length 属性报告传递给函数的参数数量,(避免将 "arguments" 字符串作为参数名,因为它将遮蔽 arguments 对象)
function traceArgArray(x:int):void
{
for (var i:uint = 0; i < arguments.length; i++)
{
trace(arguments[i]);
}
}
raceArgArray(1, 2, 3);
// 输出:
// 1
// 2
// 3

当然也可以用类似 java 的形式
function traceArgArray(x: int, args)
6 在as3中允许定义同名的静态属性和实例属性
class StaticTest
{
static var message:String = "static variable";
var message:String = "instance variable";
}
// 在脚本中
var myST:StaticTest = new StaticTest();
trace(StaticTest.message); // 输出:静态变量
trace(myST.message); // 输出:实例变量

7 在as中有一个叫做set和get存取器的东西,类似JavaBean,但又有所不同。
class GetSe
t{
private var privateProperty:String;
public function get publicAccess():String
{
return privateProperty;
}
public function set publicAccess(setValue:String):void
{
privateProperty = setValue;
}
}

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.