• 不伦不类的Action Script 3.0


    因工作需要,有可能要接手以前一位Flash程序员同事的代码,今天看了下Action Script 3.0,发现这玩意儿真的有点那个啥...


    打开Flash CS 4,新建一个Action Script3.0文件,在第一帧写几行代码:

    代码一:

    var o = "123";
    trace(typeof(o)) //输出string
    o = 123;
    trace(typeof(o)) //输出number
    

    好象还不错,有点c#3.0中的var的味道,能根据赋值不同,自动推断变量类型.

    再写几行过过瘾:

    代码二:

    var Citys:Array = ["上海","北京","武汉","广州","深圳"]
    for(var i in Citys){
    	trace("i=" + i + ",类型:" + typeof(i) + ",元素:" + Citys[i])	
    }
    

    输出:
    i=0,类型:number,元素:上海
    i=1,类型:number,元素:北京
    i=2,类型:number,元素:武汉
    i=3,类型:number,元素:广州
    i=4,类型:number,元素:深圳

    貌似也象那么回事儿,跟c#中的也差不多,i做为数组的数字下标进行元素访问(比如:Citys[1])

    改成(即把循环变量的类型明确定义成String):

    代码三:

    for(var j:String in Citys){
     trace("j=" + j + ",类型:" + typeof(j) + ",元素:" + Citys[j]) 
    }

    输出:
    j=0,类型:string,元素:上海
    j=1,类型:string,元素:北京
    j=2,类型:string,元素:武汉
    j=3,类型:string,元素:广州
    j=4,类型:string,元素:深圳

    这个看上去就特别扭了,你说要是解释成索引器重载吧(即Citys["1"]),那j输出的值貌似是"1"更合理,而输出结果是1(不加引号,误导初学者)

    而根据第二段的测试结果,循环变量默认就是number,那我们改成这样试下:

    for(var k:Number in Citys){
     trace("类型:" + typeof(k) + ",元素:" + Citys[k]) 
    }

    讽刺的是居然编译不过了!(明明在代码二中系统自动推断出是number型,现在我顺着它的系统定义成Number型却不能编译)

    也许是我道行太浅,理解不了Adobe的玄机。

    作者:菩提树下的杨过
    出处:http://yjmyzz.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    设备上下文相关函数 冷夜
    DirectxDraw加载位图 冷夜
    MMO游戏数值框架概述(偏模拟方向) 冷夜
    C++基本数据类型列表 冷夜
    Ryzom相关的项目简介 冷夜
    使用QueryPerformanceFrequency 计算程序执行时间 冷夜
    C和C++运算符 冷夜
    编译错误记录文档 冷夜
    ANSI编码对比表 冷夜
    mscorsvw.exe是什么 冷夜
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/1679855.html
Copyright © 2020-2023  润新知