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=
                       Jackal
                       krean
                       playboy
                      
;
             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

你可能感兴趣的:(flash,ActionScript3.0)