原文地址:http://blog.sina.com.cn/s/blog_4fe9d33b01010tsf.html
欣欣从小学四年级开始写Flash代码,从控制时间轴的play()到gotoAndStop(),再到后来相对复杂的if和random之类,一路上,flash和欣欣一起成长起来。AS2.0是幼稚的,没有形成系统、严谨而完善的编程语言,比如C,Java。虽然AS2.0由于简单的用法至今仍被部分人所喜爱,但是AS2和AS3正如傻瓜相机和单反一样经历着时代变迁,主流不得不接受新的事物,接受更加成熟专业的AS3.0。
欣欣承认,AS2到AS3的变化是巨大的。最初学会的语句,大部分已不能在AS3里使用。AS3不是个吸纳的过程,而是替换的过程,为了不破坏宏伟的编程大厦,所有不合时宜的朽木都被移除了。更大的变化体现在理念上,以往习惯把代码写在时间轴上,而众所周知c、java都是没有时间轴一说的,于是文档类横空出世。欣欣认为AS2的世界里,没有严格意义上的封装和模块化,前辈们的理想在AS3中终于实现。
IT是最变幻莫测的。欣欣还在用MX版本的时候,书本力荐target语句,并断言:说不定在将来,“对象.过程(参数)”的用法就被淘汰了。但事实是几年后,后者摇身一变成了最规范的写法,而前者几乎被欣欣遗忘了。
AS3.0是个崭新的开始,重头学过。
附表:
注:“移除”表示AS3已不支持的写法。
ActionScript 2.0 ActionScript 3.0 标注
编译程序指令集
#endinitclip 移除
#include 移除 参看类似的函数功能说明
常量
false false 布尔型对象默认值由undefined改为false
NaN NaN 数值型对象默认值由undefined改为NaN
newline 移除 请使用转义字符串反斜杠与字母n(即\n)
null null 对象与字符串类的默认值由undefined改为null.
undefined undefined undefined只用于未声明的变量,不是任何已声明对象的默认值
全局函数
asfunction flash.text.TextField的事件发送器:link 已被新的事件发送模型替代.你可以使用这
样的语法Event:而非asfunction:来达到相同的函数功能.当用户点击link(链接)
时,flash player将使用一个TextEvent.LINK的TextEvent事件对象,你的代码能通
过addEventListener()方法监听该事件对象.任何你打算包括的文本内容将在事件
对象的text属性中存放.
call() 移除
chr() 移除
clearInterval() flash.utils.clearInterval() 封装进flash.utils包中
clearTimeout() flash.utils.clearTimeout() 封装进flash.utils包中
duplicateMovieClip() flash.display.MovieClip.MovieClip() 已被MovieClip类构造函数替代
eval_r() 移除
fscommand() flash.system.fscommand() 封装入flash.system包中,另外,参看
JavaScript/ActionScript通信的
flash.external.ExternalInterface类
getProperty() 移除 要访问直接属性,使用dot(.)操作
getTimer() flash.utils.getTimer() 封装进flash.utils包中
getURL() flash.net.navigateToURL() 被navigateToURL()函数替代
getVersion() flash.system.Capabilities.version 移入Capabilities类并改变为[读-写]属性
gotoAndPlay() flash.display.MovieClip.gotoAndPlay() 此函数不再作为全局函数,但仍然可作为
MovieClip类的方法
gotoAndStop() flash.display.MovieClip.gotoAndStop() 此函数不再作为全局函数,但仍然可作为
MovieClip类的方法
ifFrameLoaded() flash.display.MovieClip.framesLoaded
int() int() 从低迷状态恢复为新的整数数据类型提供转换功能的函数
length() String.length 此属性不再作为全局属性,但仍可用于String类的方法
loadMovie() flash.display.Loader 请使用Loader类
loadMovieNum() flash.display.Loader 请使用Loader类
loadVariables() flash.net.URLLoader 请使用URLLoader类
loadVariablesNum() flash.net.URLLoader 请使用URLLoader类
mbchr() String.fromCharCode() 已经移除.使用固定方式
String.fromCharCode()代替
mblength() String.length 已经移除,使用String.length代替
mbord() String.charCodeAt() 已经移除,使用String.charCodeAt()代替
mbsubstring() String.substr() 已经移除,使用String.substr()代替
nextFrame() flash.display.MovieClip.nextFrame() 此函数不再作为全局函数,但仍可用于
MovieClip类的方法
nextScene() flash.display.MovieClip.nextScene() 此函数不再作为全局函数,但仍可用于
MovieClip类的方法
on() flash.events.EventDispatcher 已经移除.请使用flash.events包中新的
事件处理系统
onClipEvent() flash.events.EventDispatcher 已经移除.请使用flash.events包中新的
事件处理系统
ord() String 已经移除.请使用String类的方法
parseInt() parseInt() 以0开头的字符串将被转换为十进制
而不是八进制.要转换为八进制,将数字8作
为基本参数传入.
play() flash.display.MovieClip.play() 此函数不再作为全局函数,但仍可用
于MovieClip类的方法
prevFrame() flash.display.MovieClip.prevFrame() 此函数不再作为全局函数,但仍可用于
MovieClip类的方法
prevScene() flash.display.MovieClip.prevScene() 此函数不再作为全局函数,但仍可用于
MovieClip类的方法
print() flash.printing.PrintJob 已经移除.请使用PrintJob类代替.
printAsBitmap() flash.printing.PrintJob 已经移除.请使用PrintJob类代替.
printAsBitmapNum() flash.printing.PrintJob 已经移除.请使用PrintJob类代替.
printNum() flash.printing.PrintJob 已经移除.请使用PrintJob类代替.
random() Math.random() 已经移除.使用Math.random()代替.
removeMovieClip() 移除 将所有指向movie clip的映射设置为空(null),以便激活无用单
元收集程序
setInterval() flash.utils.setInterval() 移入flash.utils包中.建议使用Timer类代替
setProperty() 移除 用来设置可写的属性,使用dot(.)操作
setTimeout() flash.utils.setTimeout() 移入flash.utils包中
showRedrawRegions() flash.profiler.showRedrawRegions() 移入flash.profiler包中
startDrag() flash.display.Sprite.startDrag() 已不再是全局函数,但仍可用于Sprite类
stop() flash.display.MovieClip.stop() 已不再是全局函数.但仍可用于MovieClip类
stopAllSounds() flash.media.SoundMixer.stopAll() 已不再是全局函数,但仍可用于SoundMixer
类,它提供全局声音控制
stopDrag() flash.display.Sprite.stopDrag() 已不再是全局函数,但仍可用于Sprite类
substring() String.substring() 已不再是全局函数,但仍可用于String类
targetPath() 移除
tellTarget() 移除 使用dot(.)操作或者是with声明
toggleHighQuality() flash.display.Stage.quality 已经作为全局属性移除.使用Stage类代替
trace() trace() trace()方法接收逗号分界的参数列表
unloadMovie() flash.display.Loader.unload() 已经移除.使用Loader.unload()
unloadMovieNum() flash.display.Loader.unload() 已经移除.使用Loader.unload()
updateAfterEvent() flash.events.TimerEvent.updateAfterEvent() 已不再是全局函数,但仍可用
于TimerEvent,MouseEvent,和KeyboardEvent类
全局属性
_accProps flash.accessibility.AccessibilityProperties 被AccessibilityProperties类代替
_focusrect flash.display.InteractiveObject.focusRect 被InteractiveObject类的focusRect属性所代替
_global 移除 请使用类中的固定成员
_highquality flash.display.Stage.quality 被stage类的quality属性所代替
_level 移除层的概念在Actionscript3.0中不复存在,作为补偿,AS3中提供对显示项目的直接控制权.参看flash.display包
maxscroll flash.text.TextField 被TextField类中的maxScrollH和maxScrollV属性代替
_parent flash.display.DisplayObject.parent 由DisplayObject类中的parent属
性代替
_quality flash.display.Stage.quality 被stage类的quality属性所
代替
_root flash.display.DisplayObject.stage 被移除.与之功能相近的Stage,
是ActionScript 3.0显示的底层
scroll flash.text.TextField 被移除.被TextField类中
的maxScrollH和maxScrollV属性代替
_soundbuftime flash.media.SoundMixer.bufferTime 请使用SoundMixer类的bufferTime属性
this this 与此方法关联的函数方法的调用将传入this所指的
影片实例.因此,影片实例内部引用this方法将总是指向它本身.
操作
add (strings的连接操作) 移除 使用连接符”+”
eq (strings判断相等) 移除 使用相等判别符”==”
gt (大于(strings)) 移除 使用大于符号”>”
ge (大于等于(strings)) 移除 使用大于等于符号”>=”
<> (不相等) 移除 使用不等符号”!=”
instanceof i 虽然instanceof操作仍可用,但它只能
检查原型类型,它不是唯一的此类方
法.使用is操作,可以检查一个对象是否
属于某种数据类型
lt (小于 (strings)) 移除 使用小于符号”<“
le (小于等于(strings)) 移除 使用小于等于符号”<=”
and (逻辑和) 移除 使用逻辑和操作符”&&”
not (逻辑否) 移除 使用逻辑否操作符”!”
or (逻辑或) 移除 使用逻辑或操作符”||”
ne (不等于(strings)) 移除 使用不等于操作符号”!=”
声明类型
delete delete delete操作只作用于对象本身的属性,不能用于含有引用的变量
import import import不是随意可选的声明.要使用某个类,不论
使用的是不是合格的对象名,你都必须导入它.
intrinsic 移除 ActionScript 3.0有一个相似但不相同的keyword叫
native,它与intrinsic相同之处在于指引编译器不要
编译函数体,不同在于native对于编译时的格式检查无效.
private private ActionScript 3.0中private关键字指定某个标识符只在
该类中可见,并且不扩展到子类中.不仅如此,
ActionScript 3.0中的private关键字同时加强了编译
时和运行时.
set variable 移除 使用指定操作符”=”
super super ActionScript 3.0中,在子类构造器中对
super()的调用无须作为构造体的首个声明.
访问类 flash.accessibility.Accessibility
isActive()方法 flash.accessibility.Accessibility.active 由函数改为访问属性.名字由isActive改
为active
updateProperties() flash.accessibility.Accessibility.updateProperties()
参数类 arguments
caller 属性 移除 你可以让调用函数将arguments.callee作为参数传给被调函数
来达到同样的函数功能.查看例子章节中有关
arguments.callee的范例.
数组类
CASEINSENSITIVE常数 Array.CASEINSENSITIVE 类型更改为uint
DESCENDING常数 Array.DESCENDING 类型更改为uint
length属性 Array.length 类型更改为uint
NUMERIC常数 Array.NUMERIC 类型更改为uint
RETURNINDEXEDARRAY常数 Array.RETURNINDEXEDARRAY 类型更改为uint
UNIQUESORT常数 Array.UNIQUESORT 类型更改为uint
Array构造器 Array.Array() 参数改变,使用余下的参数格式
push() 方法 Array.push() 参数改变,使用余下的参数格式
sort()方法 Array.sort() 可选参数的数据类型更改为uint
sortOn()方法 Array.sortOn() 可选参数的数据类型更改为
uint.ActionScript 3.0版本下添加了额外的函数
功能,你现在能够将数组对象作为文件名参数传入
进行分组,如果你传入的可选参数为匹配数组那每
个分组区域都将有自己的匹配可选参数.
splice()方法 Array.splice() 参数可以是任何类型,但首选参数是int和uint.参数值将变为…参数格式
unshift()方法 Array.unshift() 参数值变为….参数格式.返回的数据类型更改为uint
我想想我四年级在干嘛
四年级开始….