ActionScript3.0 基础知识

(一)--变量
看了几天的官方语言指南,对ActionScript3.0(以下简称as3.0)的变量有了一些了解,和大伙分享一下。
as3.0对变量的声明有了要求,要指明变量的类型(这也是写程序应该遵守的法则),具体看下面的例子:


1.声明方式
(1)actionscript
i; //这样声明方式是错误的
var i; //这样的声明方式在as3.0中也是不推荐使用的
(2)actionscript3.0
var i:String; //声明
i="helloWorld!"; //赋初始值

2.声明并赋初始值
var i:String="helloworld";

3.多个变量声明
var i:int,a:String,b:Number;

4.多个变量声明并赋初始值
var i:int=2,a:String="nihao",b:Number=4;


这回关于变量的作用域没有变化

1.全局变量的声明
var str:String="World";
function fun(){
trace(str); //输出: World
}
fun()
trace(str) //输出: World

2.局部变量的声明
function fun(){
var str:String="World";
trace(str); //输出: World
}
trace(str) // 错误:str不能确定范围

3.全局变量和局部变量相互关系
var str1:String="World";
function fun(){
var str1:String="local";
trace(str1); //输出: local
}
trace(str1) //输出: World

关于变量的数据类型和默认值,看下面

数据类型 默认值
Boolean false
int 0
Number NaN
Object null
String null
uint 0
无声明类型 undefined
所有的其他类(包括用户自己的类) undefined


以上是小弟的浅见,有什么不好的地方多指教,关于变量的使用先说到这,如果大家有关于as3.0方面不同意见,请大家留言,一起学习进步。最后,祝大家在程序享受快乐。

(二)--包

包(Package)是ActionScript3.0(以下简称as3.0)中新概念,在以前的as版本中,也有方法使用"包"的方法,请看下面的例子:
class com.ly.TestClass{
public var string:String;
public function fun(){

}
代码....
}
这样的方法在以前是经常用到的,写过类的朋友应该深有体会。在类名前面写上类的路径,然后放在类路径里,最后在flash中调用。as3.0更改了以前的类路径用法,增添关键字Package,如果大家熟悉java的话,应该很对这个关键字的使用方法有所体会,在flash中使用方法和java大致相同,请看下面的例子:
Package com{
public class TestClass{
public var string:String;
public function fun(){
}
}
包内可以创建多个类,请看下面的例子:
Package com{
class classTestClass{}
class classTestClass1{}
class classTestClass2{}
}
导入类包的方法是使用关键字Import,请看下面的例子:
1.创建类包
//创建类包
Package com{
public class classTest{
}
class classBox{}
}
2.导入类包
Import com.*;
var mytest:classTest=new classTest(); //正确: classTest是 public
var mybox:classBox=new classBox(); //错误:classBox是
private*
*NOTE:包的内部默认类型private


(三)--namespace(名称空间)

nampspace (名称空间)是ActionScript3.0(以下简称as3.0)新的关键字,在一些先前的介绍中,说他很想C#中的名称空间,其实它和C#的使用方法有很大的不同。如果,非要说它和某个语言中方法相似的话,应该是xml。xml有名称空间声明和使用,想了解xml名称空间的使用可以在网上找些相关的资料,参考一下。
1.声明并使用名称空间的方法,请看下面的例子:
(1)申请名称空间
namesspace testname;
(2)用你所申请的名称空间来定义要被使用的方法和属性
testname function fun(){
}
(3)使用名称空间,有两种方法:
use namespace testname;
fun();
/*--第二种--*/
testname::fun();
通过以上的例子,可以申请并使用自己的名称空间。

以上是关于namespace基本用法,名称空间还有其他的用法,我会继续更新的。
(四)--循环
ActionScript3.0中新添加了一个for each...in语句,循环中其他的变化基本上没有,虽然没有什么变化,还是将他写出来,以便初学as的朋友有所借鉴。
言归正传,下面开始介绍循环的变化:
(1)for语句
它的用法和以前没有变化
var i=0;
for(i=0;i<5;i++){
trace(i); //循环输出i值
}
(2) while语句
它的用法也无变化, 只是要甚用,易出现死循环
var i=0;
while(i<5){
trace(i)
//循环输出i值;
i++;
}
(3) do..while语句
它的用法也无变化,循环一次,在进行判断
var i=5;
do{
trace(i) //循环输出i=5值;
i++;
} while(i<5);
(4) for...in语句
循环输出对象中的属性值( 不包括方法),数组中的元素。
对象循环
var object:Object={x:20;y:30};
for(var i:String in object){
trace(i+":"+object[i])
}
//输出
//x:20
//x:30
数组循环
var array:Array=["one","two","three"];
for(var i:String in array){
trace(array[i])
}
//输出
//one
//two
//three
(5) for each...in语句
as3.0中新添加的语句,和for..in有些相同,不同的是for each...in的变量包含值并通过属性替换属性名
var object:Object={x:20,y:30}
for each(var i in object){
trace(i)
}
//输出
//20
//30
你也能构重复循环XML或者XMLLIST对象,请看下面的例子
var myxml:XML=<users>
<fname>Jackal</fname>
<fname>krean</fname>
<fname>playboy</fname>
</users>;
for each(var item in myxml.users){
trace(item)
}
//输出
//Jackal
//krean
//playboy
它也允许你循环数组中的元素,请看下面的例子
var array:Array=["one","two","three"];
for each(var i in array){
trace(i);
}
//输出
//one
//two
//three
以上关于循环在ActionScript3.0中的变化,还有添加语句,如果有需要开进的请大家不要吝惜打字,多提意见。
(五)--数据类型检查
(一)数据类型
一个数据类型声明是有初始值的,例如,Boolean有两个初始值:true和false。as3.0中比较常用的数据类型,有String,Number和Array。你也可以通过使用自己写的类和接口声明所需要的数据类型。
在actionscript3.0中,初始化值和对象声明值,FlashPlay都认为他们同属一个类型
,请看下面的例子:
var otherInt:int=3;
var otherInt:int=new int(3);
注释:关于初始化值和对象声明值在flashplay是否相同有待研究
1.程序设计类型检查
在程序编写中,要明确传递变量值的类型和接受参数类型相同,请看下面的例子,参数
mystring的类型必须要和传进来相同:
function fun(mystring:String){
trace(mystring)
}
var string:String="hello";
fun(string)
在严格模式中,ActionScript编译报告类型错位并编译异常。请看下面的例子,在下面的代码中在函数中声明一个对象类型的参数,但是后来又将这个参数付给了字符串和数字型,在安全模式中将产生一个编译错误:
fucntion DynamicTest(varx:
Object ){
if(varx is
String ){
var string: String =varx; // 在安全模式中将产生一个编译错误
trace("String"+string);
}else if(varx is Number){
var number: Number =varx; // 在安全模式中将产生一个编译错误
trace("Nubmer"+number);
}
}
当然,在安全模式中不可以,你也能够使用其他的方法。在函数参数声明中可以让参数适应所有的数据类型,请看下面的例子:
fucntion fun(varx){
if(varx is
String ){
var string: String =varx;
trace("String"+string);
}else if(varx is Number){
var number: Number =varx;
trace("Nubmer"+number);
}
}
fun(100);
fun("hello");
2.运行时间检查
在普通模式中,FlashPlayer同样也有严格要求,请看下面的例子,在函数fun中参数接受了一个值3,因为参数的类型声明是一个(Array),即使运行在普通模式中也会报错:


function fun(mycan:
Array ){


trace(mycan)


}


var myNum:Number=3;


fun(myNum) /
/在普通模式中将产生一个编译错误
如果将myNum不限制类型,在普通模式中也会报错的,请看下面的例子:
function fun(mycan:Array){


trace(mycan)


}


var myNum=3;


fun(myNum) /
/在普通模式中将产生一个编译错误
(二)1. is操作符
is操作符在actionscript3.0中是新添加的,用来测试对象是不是和这个类或接口有继承关系,请看下面的例子:
var mySprite:Sprite=new Sprite();
trace(mySprite is Sprite) //输出: true
trace(mySprite is DisplayObject) //
输出: true
trace(mySprite is IEventDispatcher) // 输出: true
2. as操作符
as操作符与si操作符不同之处在于它可以输出具体对象
var mySprite:Sprite=new Sprite();
trace(mySprite as Sprite) //输出: [object Sprite]
trace(mySprite as DisplayObject) //
输出: [object Sprite]
trace(mySprite as IEventDispatcher)// 输出: [object Sprite]
trace(mySprite as Number) //输出:null

你可能感兴趣的:(设计模式,xml,Flash,actionscript)