AS 2.0转3.0[转载]

AS 2.0转3.0
今天学习了神圣的as3.0,实现了从2.0到3.0的飞跃。
看了一早上,在2.0中做游戏常用到的几个基本方法的3.0转换已经基本了解,只是3.0的oop性更强了,幸好在家是看了几页《大话设计模式》,对oop思想有了一点的了解,接触起来没那么生硬。
一.addChild,添加一个孩子
首先,在舞台上新建一个mc,或者从库里拖到舞台上一个mc,然后修改mc的实例名名,在动作面板中对这个mc写一些相关的代码。比如mc.属性=…;mc.方法=…这些是没有变的;下面我来说一下,从库里调用mc的变化。
在as2.0中,我们给mc起一个链接名,然后用attachMovie来调用这个mc。
代码:
attachMovie(“链接名”,”新名字”);


这样我们就在舞台上就有了一个叫“新名字“的mc。
在as3.0中的写法有所改变,它把库中的mc看成了一个类,要在舞台上载入这个mc,首先要声明这个类,然后再把它new出来,然后在add到舞台上,写法是这样的。
代码:
var 新名字 = new 链接名();
addChild(新名字);

添加上了,我们应怎么删除呢?添加是addChild,那么删除,就应该是removeChild的咯,没错,我们用mc.parent.removeChild来删除,比如如果mc的parent是stage,那么删除mc应该是
代码:
stage.removeChild(mc);

二。ENTER_FRAME,让mc动起来
在as2.0中,要让一个mc连续的移动,我们用onEnterFrame
代码:
onEnterFrame=function(){
新名字._x++;
}

在as3.0中,要实现同样的效果,仿佛麻烦了一些,另外,需要说明的是,在as3.0中的属性,都没有了“_“,也就是做,mc的_x属性应该写成:mc.x。
as3.0中,要先给stage建立一个事件侦听,监听到ENTER_FRAME事件后,去调用moving函数(这是我自定义的),写法如下:
代码:
import flash.events. Event;
stage.addEventListener(Event.ENTER_FRAME,moving);
//或者写成
// stage.addEventListener(“enterFrame”,moving);
function moving(e:Event) {
      新名字.x++;
}

三。MouseEvent,看看鼠标在干嘛
在as2.0中,检测一个mc上的鼠标事件,可以这么写
代码:
mc.onRelease=function(){
trace(“mc is release!”);
}

其他的像onPress,onRollOver…类似。
在as3.0中,没有了onRelease等事件,还是要通过事件侦听来实现,这是as3.0一个新的机制。思路跟添加ENTER_FRAME的差不多,写法如下:
代码:
import flash.events.MouseEvent;
mc.addEventListener(MouseEvent.MOUSE_DOWN,down);
//或者写成mc.addEventListener(“mouseDown”,down);
function down(e:MouseEvent){
trace(“mouse is down”);
}

四.KeyboardEvent,用键盘让mc懂起来
在as2.0中,先新建一个listener,用这个listener来监听键盘的动作,然后把这个listener添加到key上,写法如下:
代码:
var keyListener:Object;
keyListener.onKeyDown=function(){
if(Key.getCode==Key.LEFT){
trace(“left key is press!”);
}
}
key.addListener(keyListener);

在as3.0中的写法很类似,只是少了新建keyListener那一句
代码:
import flash.ui.Keyboard;
stage.addEventListener(KeyboardEvent.KEY_DOWN,isDown);
function isDown(e:KeyboardEvent){
if(e.keyCode==Keyboard.UP){
trace("left key is press!");
}

}
到这里,用以上的几个函数来做一个小游戏,应该是没问题了,好了,赶快去把你as2.0的游戏改成as3.0的吧!!
最后编辑浤炆 最后编辑于 2008-08-05 13:42:43