文档章节

ActionScript 3.0 记要(1): 基本语法

涂孟超
 涂孟超
发布于 2014/09/26 15:32
字数 1517
阅读 8
收藏 1

近期要做的东西既需要运行于网络又需要运行于本地, 并要尽量多地兼容各种平台(包括手机平台).
大概了解了 PhoneGap、HTML5、Adobe AIR、Flash、SilverLight、uniGUI、Qt, 发现还是老牌的 Flash 更适合需求.

因需全部用代码完成界面与逻辑, 所以主要的学习任务是 ActionScript 3.0;
感谢 Delphi 给我的营养, 让我不再畏惧其它工具和语言.

对 ActionScript 3.0 的初步感受: 很像且优于 JavaScript, 特别在面向对象方面; 另外参考资料也特别充足, 估计两三天即可修完需要的部分.

测试环境 Flash CS5; 测试准备:
1、新建 ActionScript 3.0 工程;
2、在第一帧上点击右键 -> 动作, 打开代码输入窗口;
3、输入代码后, Ctrl+Enter 运行.

测试输出:
trace(123);
trace("abc");


变量与常量:
var a:int, b:int, c:int;
a = b = c = 6;
trace(a, b, c); //6 6 6

const d:int = 123;
trace(d);


数据类型:
//整形
var iV1:int = -1;
var iV2:int = new int(-2);
var iV3:int = new int("-3");
trace(iV1);
trace(iV2);
trace(iV3);

//无符号整形
var uV1:uint = 1;
var uV2:uint = new uint(2);
trace(uV1);
trace(uV2);

//浮点数
var nV1:Number = 3.14159265;
var nV2:Number = new Number(-3.14);
trace(nV1);
trace(nV2);

//布尔值
var bV1:Boolean = true;
var bV2:Boolean = new Boolean(false);
trace(bV1);
trace(bV2);

//字符串
var sV1:String = 'ActionScript';
var sV2:String = new String("万一的 Delphi 博客");
trace(sV1);
trace(sV2);

/* Object */

//Date
var dateVal:Date = new Date(2011, 5, 13);
trace(dateVal.toString());

//数组
var sArr1:Array = ["spring", "summer", "autumn", "winter"];
var sArr2:Array = new Array("spring", "summer", "autumn", "winter");
trace(sArr1[0]);
trace(sArr2[1]);

var iArr = [11, 22, 33];
trace(iArr[iArr.length-1]);

//XML
var xmlVal:XML = <List><item>AAA</item><item>BBB</item></List>
trace(xmlVal.item[0]); //AAA


数据类型默认值:
//整形
var i:int;
trace(i); //0
trace(int.MIN_VALUE, int.MAX_VALUE); //-2147483648 2147483647

//无符号整形
var u:uint;
trace(u); //0
trace(uint.MIN_VALUE, uint.MAX_VALUE); //0 4294967295

//浮点数
var n:Number;
trace(n); //NaN
trace(Number.MIN_VALUE, Number.MAX_VALUE); //4.9406564584124654e-324 1.79769313486231e+308

//布尔值
var b:Boolean;
trace(b); //false

//字符串
var s:String;
trace(s); //null

//Object
var obj:Object;
trace(obj); //null

var dt:Date;
trace(dt); //null

//未声明
var arr:Array = [11, 22];
trace(arr[1]); //22
trace(arr[2]); //undefined

var val;
trace(val);  //undefined

trace(void); //undefined


类型转换:
//
var i:int;
i = int(true);  trace(i); //1
i = int(false); trace(i); //0
i = int(5.67);  trace(i); //5
i = int(0x1A);  trace(i); //26

i = parseInt('3'); trace(i); //3
i = int("4");      trace(i); //4

//
var n:Number;
n = parseFloat("3.14159265"); trace(n); //3.14159265
n = Number("3.14159265");    trace(n); //3.14159265


//
var b:Boolean;
b = Boolean(-1);   trace(b); //true
b = Boolean(0);    trace(b); //false
b = Boolean(1);    trace(b); //true
b = Boolean(2);    trace(b); //true

b = Boolean("");   trace(b); //false
b = Boolean(" ");  trace(b); //true

var obj1:Object;
var obj2:Object = new Object();
b = Boolean(obj1);   trace(b); //false
b = Boolean(obj2);   trace(b); //true

//
var str:String;
var arr:Array = ["primary", "secondary", "tertiary"];
str = String(arr); trace(str);     //primary,secondary,tertiary
str = String(Math.PI); trace(str); //3.141592653589793


运算符:
[]       //初始化数组
{x:y}    //初始化对象
()       //对表达式进行分组
f(x)     //调用函数
new      //调用构造函数
x.y x[y] //访问属性
<></>    //初始化 XMLList 对象 (E4X)
@        //访问属性 (E4X)
::       //限定名称 (E4X)
..       //访问子级 XML 元素 (E4X)
++       //递增(前缀、后缀)
--       //递减(前缀、后缀)
+        //一元 +
-        //一元 - (非)
!        //逻辑 NOT
~        //按位 NOT
delete   //删除属性
typeof   //返回类型信息
void     //返回未定义值
*        //乘
/        //除
%        //求模
+        //加
-        //减
<<       //按位左移位
>>       //按位右移位
>>>      //按位无符号右移位
<        //小于
>        //大于
<=       //小于或等于
>=       //大于或等于
as       //检查数据类型
in       //检查对象属性
instanceof //检查原型链
is       //检查数据类型
==       //等于
!=       //不等于
===      //全等
!==      //不全等
&        //按位 AND
^        //按位 XOR
|        //按位 OR
&&       //逻辑 AND
||       //逻辑 OR
?:       //三目运算符
=        //赋值
*=       //乘法赋值
/=       //除法赋值
%=       //求模赋值
+=       //加法赋值
-=       //减法赋值
<<=      //按位左移位赋值
>>=      //按位右移位赋值
>>>=     //按位无符号右移位赋值
&=       //按位 AND 赋值
^=       //按位 XOR 赋值
|=       //按位 OR 赋值


语句:
//if 语句
if () { } else { }

//三目
var a:int, b:int, c:int;
a = 1;
b = 2;
c = (a > b) ? a : b;
trace(c); //2

//switch 语句
var dt:Date = new Date();
var day:uint = dt.getDay();
switch(day)
{
    case 0:
    trace("Sunday");
    break;
    case 1:
    trace("Monday");
    break;
    case 2:
    trace("Tuesday");
    break;
    case 3:
    trace("Wednesday");
    break;
    case 4:
    trace("Thursday");
    break;
    case 5:
    trace("Friday");
    break;
    case 6:
    trace("Saturday");
    break;
    default:
    trace("Out of range");
    break;
}

//for 循环
for (var i:int = 0; i < 5; i++)
{
    trace(i);
}

//for in 循环
var arr:Array = ["one", "two", "three"];
for (var s:String in arr)
{
    trace(s, ":", arr[s]);
}
/***********
0 : one
1 : two
2 : three
************/
var obj:Object = {x:20, y:30};
for (var s:String in obj)
{
    trace(s, ":", obj[s]);
}
/***********
y : 30
x : 20
************/

//for each 循环
var arr:Array = ["one", "two", "three"];
for each (var str in arr)
{
    trace(str); //one/two/three
}

var obj:Object = {x:20, y:30};
for each (var num in obj)
{
    trace(num); //20/30
}

var myXML:XML = <users><fname>Jane</fname><fname>Susan</fname><fname>John</fname></users>;
for each (var item in myXML.fname)
{
    trace(item); //Jane/Susan/John
}

//while 循环与 do while 循环
var i:int;

i = 0;
while (i<5)
{
    trace(i); //0/1/2/3/4
    i++;
}

i = 5;
do
{
    trace(i); //5
    i++;
} while(i<5);


函数:
//函数语句
function Add(a:int, b:int):int
{
    return a + b;
}
trace(Add(1, 2)); //3
//----------------------------------------------------------------


//函数表达式
var traceParameter:Function = function (str:String)
{
    trace("Hello " + str);
}; //分号
traceParameter("ActionScript"); //Hello ActionScript
//----------------------------------------------------------------


//函数成员
function Sum(a:int, b:int):int { return a+b; }
var arr:Array = new Array();
arr[0] = Sum;
arr[1] = function(a:int, b:int) { return a*b; };

trace(arr[0](3, 4)); //7
trace(arr[1](3, 4)); //12
//----------------------------------------------------------------


//嵌套函数
function myFun():String
{
    function Fun1():String { return "Hello"; }
    function Fun2():String { return "ActionScript"; }
    return Fun1() + " " + Fun2();
}
trace(myFun()); //Hello ActionScript
//----------------------------------------------------------------


//默认参数
function Sum(a:int, b:int=2, c:int=3):int { return a+b+c; }
trace(Sum(1)); //6
//----------------------------------------------------------------


//基本数据类型参数(Boolean、Number、int、uint、String)按值传递
function Inc1(a:int):void 
{
    a++; 
}
var b:int = 1;
Inc1(b);
trace(b); //1

//对象参数按引用传递
function Inc2(aObj:Object):void
{
    aObj.x++;
    aObj.y++;
}
var obj:Object = { x:1, y:2 };
Inc2(obj);
trace(obj.x, obj.y); //2 3
//----------------------------------------------------------------


//函数中的 arguments 对象
function myFun(a:int, b:int, c:int):void
{
    for (var i:uint = 0; i< arguments.length; i++)
    {
        trace(arguments[i]);
    }
}
myFun(11, 22, 33); //11/22/33

//arguments.callee 表示函数本身; 使用回调完成阶乘的例子:
var factorial:Function = function (x:uint)
{
    if(x == 0)
    {
        return 1;
    }
    else
    {
        return (x * arguments.callee(x - 1)); //同 return (x * factorial(x - 1));
    }
}

trace(factorial(5)); //120
//----------------------------------------------------------------


//... (rest) 数组参数:
function myFun(...myArgs):void
{
    for (var i:uint = 0; i < myArgs.length; i++)
    {
        trace(myArgs[i]);
    }
}

myFun(1, 2, 3); //1/2/3
myFun("A", "B", "C", 1, 2, 3); //A/B/C/1/2/3


错误处理:
try 
{
    throw new Error("抛出错误");
    trace("不会执行");
} 
catch(e:Error)
{
    trace(e.message);
}
finally 
{
    trace("是否发生错误都会执行");
}

本文转载自:http://www.cnblogs.com/del/archive/2011/05/03/2035122.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
分享30本关于flash方面的学习书籍(免费下载)

分享30本关于flash方面的学习书籍(免费下载) 1、flash_ActionScript_3.0实用教程 2、ActionScript+3.0编程精髓中文版 3、ActionScript3.0运算符及表达式 4、ActionScript3.0数据类型 5、A...

邓剑彬
2012/12/03
1K
1
开源Flash播放器--Lightspark

Lightspark是采用GPLv3授权的开源 Flash播放器替代,支持基于OpenGL的渲染和基于LLVM的ActionScript执行。现在Lightspark的开发者宣布发布beta版,该版本支持最新的flash脚本语言 ActionScri...

匿名
2010/05/19
5.9K
0
FLEX程序设计--事件和事件机制--Event类

1.事件概述: 事件是系统与用户之间直接的交互方式.当用户向系统发出指令时,就会产生一个事件,用户就可以与系统对话. 1.1.事件的监听 在ActionScript3.0中,注册事件的侦听函数是通过addEventL...

小麋鹿666
2017/02/10
0
0
Lightspark 0.4.2 发布,开源Flash播放器

Lightspark是采用GPLv3授权的开源 Flash播放器替代,支持基于OpenGL的渲染和基于LLVM的ActionScript执行。现在Lightspark的开发者宣布发布beta 版,该版本支持最新的flash脚本语言 ActionSc...

红薯
2010/07/04
1K
0
Lightspark 0.4.3 发布,开源Flash播放器

Lightspark是采用GPLv3授权的开源 Flash播放器替代,支持基于OpenGL的渲染和基于LLVM的ActionScript执行。现在Lightspark的开发者宣布发布beta 版,该版本支持最新的flash脚本语言 ActionSc...

红薯
2010/08/11
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

如何有效的背单词

转眼间到了大三快要结束了。英语四级考了三次了,每次都220多分。成绩很稳定,但离四级线还有200多分。学校规定如果过不了四级线,就拿不到学士学位证。没有学位证就找不到好工作,找不到好工...

我是菜鸟我骄傲
36分钟前
1
0
导出表格

https://blog.csdn.net/hhzzcc_/article/details/80419396

Js_Mei
59分钟前
0
0
Ubuntu中安装Elasticsearch

1.安装jre elasticsearch是使用java开发的搜索引擎,因此其运行依赖于java runtime environment,我们在这里不使用Oracel的官方jre,改为使用open-jre。 运行环境: ubuntu:18.04 jre:openj...

cloes
今天
0
0
nginx rails 详细站点配置入门教程

Ruby on Rails 是一个用于开发数据库驱动的网络应用程序的完整框架。Rails基于MVC(模型- 视图- 控制器)设计模式。从视图中的Ajax应用,到控制器中的访问请求和反馈,到封装数据库的模型,R...

xiangyunyan
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部