从零开始学AS3游戏开发Word文件下载.docx
- 文档编号:17857766
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:55
- 大小:108.04KB
从零开始学AS3游戏开发Word文件下载.docx
《从零开始学AS3游戏开发Word文件下载.docx》由会员分享,可在线阅读,更多相关《从零开始学AS3游戏开发Word文件下载.docx(55页珍藏版)》请在冰豆网上搜索。
NewClass,输入文件名Main,选择baseClass后面的Browse按钮,输入Sprite
这样,我们就建立了一个继承自Sprite类的对象Main。
Sprite是FLASH的一个基本显示元素,它没有时间轴的概念。
打开FLASHCS3,新建一个ActionScript3.0文件,并把它保存到刚才建立的项目的目录中。
在属性栏里,把帧频改成30,文档类输入Main。
这样,我们就建立了一个可以由Main.as控制的FLASH文件。
把刚才生成的Main.as改成像下面这样:
1.package
2.{
3.
importflash.display.Sprite;
4.
5.
publicclassMainextendsSprite
6.
{
7.
8.
publicfunctionMain()
9.
10.
trace('
我运行咯!
'
);
11.
}
12.
13.
14.
15.}
复制代码
回到FLASHCS里,按下ctrl+enter进行测试:
看到输出框里出现的输出,说明程序已经可以运行了。
trace是FLASH中的消息输出命令,我们在今后的开发过程中会经常使用的。
至此,准备工作完成。
开始我们的创建之旅吧。
首先来建立游戏时间里的“亚当”——gameObject。
在我们的项目里新建文件夹D5Power(起个自己喜欢的名字),并在D5Power下面再建一个文件夹Objects,最后,在Ojbects里Add一个NewClass,输入文件名gameObject,同样,baseclass选择Sprite。
建立完成后,我们的项目看起来应该像这样了:
在FlashDevelop给我们生成的代码中,我们看到了packageD5Power.Objects这样的字眼。
package即是包,我们的源代码可以存放在不同的包中,这样可以保持代码的结构清晰。
包的名字实际上就是对应目录的名字。
如packageD5Power.Objects这样,我们就可以知道gameObject文件是保存在D5Power/Objects/这个目录下面,如果package后面没有任何内容(比如我们刚才建立的Main),那么这个文件就是在项目的默认包(源代码的顶级目录)中。
不同层级的包之间的访问,必须通过improt进行包含,而同级,以及访问默认包内的文件,是不需要的。
这个我们以后会再继续详细的说明
回来考虑一下我们的“亚当”——gameObject,它是最基础的元素,所以,我们只给他定义最简单的可以做的事情,首先,他可以做一些事(至于做什么,我们先不考虑),另外,他会死亡。
既然他可以产生在这个游戏世界里,那么他就必须可以从这个世界里消失的无影无踪:
1.packageD5Power.Objects
4.
/**
*基础游戏对象
*@authorD5Power
*/
publicclassgameObjectextendsSprite
publicfunctiongameObject()
14.
15.
16.
17.
*做些什么
18.
19.
publicfunctionDo():
void{}
20.
21.
*死亡
22.
23.
publicfunctiondie():
void{}
24.
25.
26.
27.}
我们定义了一个空的die函数,它什么也没做,我们将在以后慢慢的去补足它。
现在,gameObject除了活着,就是死了。
这显然不能满足我们的要求。
所以我们必须让他繁衍下一代,并产生进化。
在Objects里再新建一个类,命名为actionObject,把它的baseclass输入gameObject。
现在,我们获得了一个“亚当的儿子”。
他继承了亚当的全部特性(可以死亡),并可以有自己独特的事情可以做。
我们决定教他如何行走:
*可活动的游戏对象
publicclassActionObjectextendsgameObject
*移动速度
protectedvarspeed:
Number=1.2;
*移动方向
protectedvarwalkDirection:
uint=0
publicstaticconstUP:
uint=1;
publicstaticconstDOWN:
uint=2;
publicstaticconstLEFT:
uint=3;
publicstaticconstRIGHT:
uint=4;
publicfunctionActionObject()
26.
27.
28.
*修改移动方向
29.
30.
publicfunctionsetdirection(dir:
uint):
void
31.
32.
walkDirection=dir;
33.
34.
35.
*移动
36.
37.
protectedfunctionmove():
38.
39.
//根据不同的方向进行移动
40.
switch(walkDirection)
41.
42.
caseUP:
43.
y-=speed;
44.
break;
45.
caseDOWN:
46.
y+=speed;
47.
48.
caseLEFT:
49.
x-=speed;
50.
51.
caseRIGHT:
52.
x+=speed;
53.
54.
default:
break;
55.
56.
57.
58.
59.
*覆盖父类的Do方法
60.
61.
overridepublicfunctionDo():
62.
63.
if(walkDirection!
=0)move();
64.
super.Do();
65.
66.
67.}
在这段代码中,我们第一次接触到了一些关键字,下面对他们进行说明
varFLASH中定义变量用的前缀,比如varnum:
int=5;
定义一个整型变量num,默认值为5
functionFLASH中定义函数的前缀,比如functiontest():
void{}定义一个名为test的函数,没有返回值
public这个关键字之后的定义是公有的,可以被外部的类访问。
比如,大家都知道你的名字,所以你的名字是public的。
private这个关键字之后的定义是完全私有的,只能被类自己访问。
比如,你银行的密码只有你自己知道,所以他是private的。
protected这个关键字之后的定义,是私有的,但家族成员可以访问。
比如,你儿子知道你屁股上有一颗痣,其他人不知道。
。
笑,所以这个痣是protected的
override覆盖父级类的定义
set在上例代码中,可以通过某actionObject.direction这样来访问这个函数,而不是.direction(),和它类似的还有get关键字。
你可以用他们来生成一个只读或只写的“变量”
现在,“亚当的儿子”可以行走了。
但是,我们不知道怎样才能通知他走,怎样走。
我们必须有一个控制他的方法,让他来听从我们的指挥。
因为,我们必须创建一个控制器来控制它。
在这之前,我们要学习一些操作这个世界的方法和技巧(上帝也需要学习么,呵呵)
从零开始学AS3游戏开发【二】随机移动的敌人
第二篇随机移动的敌人
在上一篇教程中,我们搭建了一个简单的程序结构,并编写了程序,通过键盘的控制,让游戏场景中的一个方块根据我们的要求移动。
对于一个游戏来讲,只有主角是不够的,我们需要敌人。
敌人和主角拥有相同的属性:
他们都有长相(外表,虽然现在只是一个方块。
),有控制器进行控制。
所以,我们可以从ActionObject来进行扩展,产生两个不同的分支来实现他们。
我们先来构建整个程序的结构:
可以看出,ActionObject是不具备“长相”这个特征的,而不管是主角或敌人,都有自己不同的样式。
在上一篇的教程中,我们把黑色的方框直接指定为了ActionObject类,这样扩展性显然不好。
因此,我们单独建立一个具备长相特征的类,继承自ActionObject。
具体的操作方法可以参考上一篇教程。
注意,因为ActionObject的构造函数是有参数的,所以我们勾选匹配基类的构造函数,让FD自动帮我们生成构造函数。
importD5Power.Controller.basicController;
*具备外表皮肤的ActionObject
publicclassFaceObjectextendsActionObject
protectedvar_face:
Sprite;
*
*@param
ctrl
控制器
face
外观
publicfunctionFaceObject(ctrl:
basicController,face:
Sprite)
super(ctrl);
_face=face;
addChild(_face);
25.
26.}
FaceObject在ActionObject的基础上,增加了_face属性,并在构造函数中,通过addChild把_face显示了出来,这样,我们就可以给他赋予不同的外观了。
接下来来实现主角类和敌人类。
继承自我们刚刚写好的FaceObject类。
暂时直接继承就可以了,不用写其他的代码。
*主角类
publicclassPlayerextendsFaceObject
publicfunctionPlayer(ctrl:
basicController,face:
super(ctrl,face);
19.
20.}
*敌人类
publicclassMonsterextendsFaceObject
publicfunctionMonster(ctrl:
既然结构改变了,那我们在上一篇教程中使用的黑色方块就没必要再定义为ActionObject了,我们现在只把它作为皮肤使用,在库中右键选择,在弹出菜单中选择属性,把类名改为Skin1。
由于我们并没有编写Skin1,FLASH会帮我们自动生成一个Skin1类,以后就可以通过newSkin1()来进行声明了。
用同样的办法,我们再重新绘制一个红色的方块,作为敌人的皮肤。
定义类名为Skin2
而主场景中,我们原来的代码就需要做一下修改了:
1....
2.varobj:
Player=newPlayer(ctrl,newSkin1());
3....
当然,也可以试一下用敌人的皮肤:
Player=newPlayer(ctrl,newSkin2());
这样,大体的结构就已经建好了。
接下来。
我们来针对问题进行不同的处理。
首先,既然敌人和主角都可以移动。
那么,我们就有必要增加限制。
因为它们势必只能在允许的范围内移动。
就我们目前的需求来看,他们只能在屏幕的区域范围内移动(因为我们暂时没有任何障碍物)。
因此,在移动前,我们要检查它的下一个目标点是否可以移动。
很显然,这个检查是同时针对敌人和主角的,因此,我们在ActionObject上进行扩展,修改ActionObject的代码,增加nextCanMove方法:
1./**
2.
*下一目标点是否可以移动
publicfunctiongetnextCanMove():
Boolean
//下一X位置
varnx:
uint=0;
//下一Y位置
varny:
//根据移动方向进行处理,计算出下一目标点位置
ny=y-speed;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 从零开始 AS3 游戏 开发