不伦不类的Action Script 3.0

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

因工作需要,有可能要接手以前一位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的玄机。

目录
相关文章
|
22天前
|
JavaScript 前端开发 Go
理解 <script> 标签的 defer 和 async 属性
理解 <script> 标签的 defer 和 async 属性
20 3
|
5月前
|
JavaScript 前端开发
JS中的form对象是什么
JS中的form对象是什么
34 0
|
8月前
|
移动开发 Go UED
<script> 标签上的 defer 和 async 属性是什么?
它会执行以下步骤 1.暂停 HTML 文档解析器 2.创建新请求以下载脚本 3.在脚本完全下载后立即执行脚本 4.执行结束后,继续解析 HTML 文档
|
10月前
|
JavaScript
“</script>“报错
“</script>“报错
|
Go API
script标签中defer和async有什么不同?
script标签中defer和async有什么不同?
85 0
script标签中defer和async有什么不同?
|
JavaScript Go
script标签中的defer与async
script标签中的defer与async
script标签中的defer与async
<script>alert(123123)</script>
<script><script><script><script><script><script><script>
1243 0
|
JavaScript 数据格式 JSON

热门文章

最新文章