发新话题
打印

ActionStript3.0 特性介绍

ActionStript3.0 特性介绍

ActionStript3.0 特性介绍4 o! X1 T  d0 A; _1 _
ActionScript 是针对 Adobe Flash Player 运行时环境的编程语言,它在 Flash 内容和应用程序中实现了交互性、数据处理以及其它许多功能,ActionScript 是由 Flash Player 中的 ActionScript 虚拟机 (AVM) 来执行的。ActionScript代码通常被编译器编译成“字节码格式” ,有点类似 java 的处理和运行机制。变过 C#,Java和javascript程序的朋友,肯定能在 ActionScript 中找到这些语言的影子。( R2 J& }, z! {3 ?" z" {6 r
以下是Actionscript的基本特性介绍。具体完整的学习,还是需要找找资料。例如,《ACTIONSCRIPT 3.0权威指南》http://www.china-pub.com/208958; D- W4 V6 A  V1 m, R3 y1 _0 `$ ]" L
《FLASH/FLEX ACTIONSCRIPT 3.0交互式开发详解:语法基础、典型应用、视频网站实战》http://www.china-pub.com/38096
8 U% K. |. G+ f9 E; j' U+ r! c1. 内置命名空间和自定义命名空间
& ]0 `/ L6 a! Q3 I. [: u四个内置修饰符:& m/ C# K$ }* a: p' s4 x
public :对所有代码可见
% |" c) M  i8 a& j  W( L$ Yprivate: 只对类内部可见
4 r; a$ T. [9 jinternal :只对定义所在的同一包内可见9 D/ }0 T: [( T; `0 Z3 |/ o  r* z4 w
protected :对同一包以及不同包的子类可见7 R* J5 G5 ]' [
2 {. A; f6 v. g1 x- X* @
自定义命名空间:使用关键字namespace定义命名空间,声明属性和方法时,应用命名空间。
5 z3 k) {4 C3 c7 t7 e0 B6 NAS 代码: % m+ D6 u9 j4 K' Q# ~: I5 l4 e2 k* C
Namespace testSpace="org.blogjava.jm/ testSpace "; ; f/ Y% Y, }( r3 H
testSpace myfunction2():void{} ( F# l5 F8 X1 Y0 p
调用使用 use 关键字打开命名空间1 a; a' [/ g: a6 y
use mySpace2; / i' y0 y1 v8 Z+ k7 z* U
myfunction2();
) f# ]. z$ |: n: Y& _) H% l 0 u, o' F! a( b: X' E9 r6 ^9 T. E
2. Local 变量特点+ f% M4 ?& q6 w4 y" U
与java不同的是,在as3中,变量没有块级作用域(即两人大括号中间),如果在一个块内声明了一个变量,比如一个for循环内声明了一个变量,它在该代码所在整个函数内都是可访问的。
* M* r6 T5 K0 R1 M4 m6 N6 tfunction myFunction():void{
, k, x. N9 R) M$ @+ k for(var i:int=0;i<5:i++){
: |: o# B& C0 h/ a. Z8 v: S var last:int = i;
# I6 e& v1 h) N# K0 s1 H }
2 |3 K2 O2 y* ` trace(last);
( }* N# C9 ~* a7 w) V! G! J1 G7 n} 1 Q5 n1 [9 N: W; ]! \

  \( x" T% _2 j" q3 o9 N# ]/ K0 Jlast 在 for 中定义但可以在 for 块外面访问到,个人觉得这样设计欠妥,尽管很方便。
  ]' K# F( w  m5 L3 Dynamic 类
2 t; b: W" \7 J/ `, kObject 类本身就是动态类,当然也可以用 dynamic 关键字来声明一个类,所谓动态就是在运行时可以对类追加属性和方法。
5 ?* h" n4 q4 J6 ]* L8 o8 ~/ M/ Pdynamic class Protean{}( C+ P% i1 \! D" a) \( R4 H; L
var myProteanrotean = new Protean(); 4 x* K/ i3 i- q
myProtean.name = "jack.wang";
% E' g, Q! f! OmyProtean.password = 3; % [# T1 c' e& D. X0 m0 [
trace(myProtean. name , myProtean. password );
2 a: j8 i8 f" t7 @$ V 定义函数的两种方式:函数语句和函数表达式/ N, I0 f/ k6 q$ m. s
//函数语句声明
' d% F) g/ ~2 W$ k9 o/ L/ G- F6 KFunction fun1():void{} + S8 Y+ t- A  i- h( v$ Q" I3 c
//函数表达式声明 $ g4 u+ n8 V( g, n! o
var fun2:Function = function():void{} ! B4 }4 w* ?( u# u7 R
函数表达式声明的函数是不能够被垃圾回收的,必须显示的调用 delete 命令。
8 H, y& b6 l2 h. P# y5 }var t:Test = new Test(); //t是动态类Test的一个实例
+ X9 o2 `+ h0 Kt.funt = function(){};//把一个函数声明为t的一个属性
. M7 k5 \( g  t- X" ?delete t.funt; //删除刚才新增的函数,我们刚才声明的函数也被回收了, B% W4 q- Y/ ]5 @0 C3 x( o! f$ E' P6 I
! K, G9 N- ]5 o; [+ O( n( P5 S
5 在as3中也有arguments对象,功能基本上和javascript中的一样。: A- X* q5 R3 p4 ~3 a
arguments 对象是一个数组,其中包括传递给函数的所有参数,arguments.length 属性报告传递给函数的参数数量,(避免将 "arguments" 字符串作为参数名,因为它将遮蔽 arguments 对象)  ?8 k4 M1 K! t4 i/ m8 C0 M; p$ P( v
function traceArgArray(x:int):void 6 b- }* f+ {0 h. w& N0 [  L  }
{
, ^' Y- E2 C7 R6 u for (var i:uint = 0; i < arguments.length; i++) : H9 G4 n% m8 M  W) k" ?
{ 5 C& w8 f* R1 o6 j  j& {
trace(arguments);
, F: F- A$ F. U: S }
, t0 c) R- A. x}
5 ]- W( @4 N1 M5 y- R9 traceArgArray(1, 2, 3); ) z/ n$ e" p# }' L: v6 `' W
// 输出: 1 z" f" z! L* p$ y' G' a3 }6 r+ d! l
// 1
- m, L) H0 }) k8 p+ N// 2
' U0 I( K( o$ j// 3! q. d  g5 j/ c5 h1 M1 S

/ M: X. g% o" Y2 Z当然也可以用类似 java 的形式
0 U: x$ S1 n5 i: w, N8 Ofunction traceArgArray(x: int, args)
- Z) V" ?5 ?' ^& ?* ^+ n. g6 在as3中允许定义同名的静态属性和实例属性5 n# Q9 U4 e& ]! O$ Q8 j  T
class StaticTest
; N- P% z& X; S/ M{ 8 ~9 ^5 }$ @. V' D& x2 j2 X
static var message:String = "static variable";
- H5 `8 g  u2 T) v var message:String = "instance variable";
6 G- H7 T0 ^9 @" J$ m7 J} . k6 @/ d9 |/ r; f
// 在脚本中
0 \0 q) P: J" r1 i  wvar myST:StaticTest = new StaticTest();
  N4 @7 J  v! Atrace(StaticTest.message); // 输出:静态变量
4 @2 p# \6 L3 P" r, Z4 b8 ]trace(myST.message); // 输出:实例变量
- X$ H% u$ I- @" |
0 A$ y  r% O3 i3 |! Z9 t& A8 Y7 在as中有一个叫做set和get存取器的东西,类似JavaBean,但又有所不同。
- A0 y0 E. n: p9 d4 [, C1 Lclass GetSe
# u, [$ u% @' ?5 T9 Xt{. p. k. z6 @: C" T! f3 P
private var privateProperty:String;
; s# F  `5 Y  D2 @public function get publicAccess():String  {  w" r0 Q9 A6 a/ }3 o
{
+ d' _) P* k3 C: hreturn privateProperty;
& z9 J0 J3 |9 i1 `: j}. u! G5 N3 W' {0 o
public function set publicAccess(setValue:String):void
0 d$ i5 e- j7 [( r  \) \0 r: ]" l{
( g" q2 g0 v( ?/ zprivateProperty = setValue;: u, r, i0 U) U5 P4 X1 b$ ~
}
9 Y. F7 o' L  c5 J- F1 d' [}

TOP

发新话题
    
请严格遵守中华人民共和国法律和本论坛规章制度.
本论坛(除总公告版外)中的所有言论纯属发表者个人观点,与 海师后院 立场无关.