自己也是初学Flash ActionScript3,所写只是从一个菜鸟的角度来看Flash AS3,*_^。
AS2和AS3有很大的区别,下面以一个时钟的脚本为例介绍如何由AS2迁移到AS3:
首先新建一个fla文件,然后将以前的复制过来(脚本不会跟着复制?反正我的没有),然后改一下它的脚本:
AS2的脚本很大写在实例上,这里也一样,看看AS2的:
onClipEvent (enterFrame) {
var o_Date = new Date ();
var Hours = o_Date.getHours();
if (12 < Hours) {
Hours = Hours - 12;
}
_rotation = ((Hours * 30) + (o_Date.getMinutes() / 2));
}
onClipEvent (enterFrame) {
var Time = new Date ();
_rotation = (6 * Time.getMinutes());
}
onClipEvent (enterFrame) {
var Time = new Date ();
_rotation = (6 * Time.getSeconds());
}
而AS3的脚本不能写在实例上,语法也有点不同,象上面的第一段(很容易看出那是使时针运行的脚本),要改成下面的:
mc_Hand.addEventListener(Event.ENTER_FRAME,driveHour);//脚本不在对象实例上,要加个侦听
function driveHour(evt:Event):void {
var o_Date:Date = new Date ();//这里AS3的数据类型定义是强制定义的,和AS2不同
var Hours:uint = o_Date.getHours();
if (12 < Hours) {
Hours = Hours - 12;
}
mc_Hand.rotation = ((Hours * 30) + (o_Date.getMinutes() / 2));
}
看看,就是这样改一下就行了,其它两个依样画葫芦就行了:
mc_HandMin.addEventListener(Event.ENTER_FRAME,driveMin);
function driveMin(evt:Event):void {
var Time:Date = new Date ();
mc_HandMin.rotation = (6 * Time.getMinutes());
}
mc_HandSec.addEventListener(Event.ENTER_FRAME,driveSec);
function driveSec(evt:Event):void {
var Time:Date = new Date ();
mc_HandSec.rotation = (6 * Time.getSeconds());
}
最后,如果你将帧速改小一点,比如3甚至更小(不能小于1吧,要不就是你的秒针几秒钟才动一次了,*_^)。
Something ends, something begins, and something never changes......