ActionScript3.0学习

本文详细介绍了ActionScript 3.0中的关键概念,包括变量声明与使用、包和名称空间的应用、循环语句的新特性以及数据类型检查等。通过实例展示了如何正确地运用这些特性来提高编程效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(一)--变量

看了几天的官方语言指南,对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#的使用方法有很大的不同。如果,非要说它和某个语言中方法相似的话,应该是xmlxml有名称空间声明和使用,想了解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语句
      
它的用法也无变化,只是要甚用,易出现死循环
         
vari=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有两个初始值:truefalseas3.0中比较常用的数据类型,有String,NumberArray。你也可以通过使用自己写的类和接口声明所需要的数据类型。
  
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值