Flash游戏开发基础Word文件下载.docx
- 文档编号:22940530
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:105
- 大小:489.75KB
Flash游戏开发基础Word文件下载.docx
《Flash游戏开发基础Word文件下载.docx》由会员分享,可在线阅读,更多相关《Flash游戏开发基础Word文件下载.docx(105页珍藏版)》请在冰豆网上搜索。
_x
_y
MC._x
MC._y
返回/设置MC的横纵坐标值
Y
数值
_xscale
_yscale
MC._xscale
MC._yscale
返回设置MC的x/y轴缩放比例
_alpha
MC._alpha
返回/设置MC的透明度
0-100
_visible
MC._visible
返回/设置MC的可见性
true;
false
_width
_height
MC._width
MC._height
返回/设置MC的宽/高值
_rotation
MC._rotation
返回/设置MC的角度
_currentframe
MC._currentframe
返回MC的当前帧
N
-
_totalframes
MC._totalframes
返回MC的总帧数
_framesloaded
MC._framesloaded
返回已下载帧数
_name
MC._name
返回/设置MC的名称
4.判断按键
既然是游戏,当然就要响应玩家的各种反应,除了鼠标,最直接的就是键盘了。
响应键盘无非是判断玩家按下了哪一个键或者组合键,要实现这些其实很简单,我们既可以通过按钮或MC的事件来响应按键,也可以通过帧上的动作来响应,举例说明:
(1)按钮的keyPress方法:
先说按钮,按钮除了响应鼠标的一些动作(如:
rollOver,release...)之外还有几个是响应固定按键的(如Enter,Left,Home,PageDown...),下面我们就来制作一个。
建立一个按钮,拖到场景中,捆绑下面的AS:
on(keyPress"
"
){
trace("
按下了Left键"
);
}
这样当我们在测试的环境下按下左方向键后,output窗口就会显示出"
。
下面说说怎样使MC响应按键更复杂的按键。
(2)MC响应单个按键:
onClipEvent(keyDown){
if(Key.isDown(72)){
trace("
按下了H键"
}
这样在测试的环境下按下H键,output窗口就会显示出"
其中72是H键的keyCode值(其他按键的keyCode值将在附录中给出),如果不知道某个键的keyCode值也没关系,Flash为我们提供了getCode函数,将上面AS中的72替换成Key.getCode("
H"
)会得到同样的效果。
(3)MC响应组合键:
if(Key.isDown(72)&
&
Key.isDown(17)){
您按下的组合键是Ctrl+H"
在测试的环境中按下Ctrl+H键,output窗口就会显示出"
(4)利用帧上的动作响应按键:
新建一个flash文件,利用上面讲过的:
在第一帧写AS,第二帧创建内容帧的方法,使影片形成循环以便随时进行判断,然后在第一帧中写入下面的几组代码,分别进行试验;
如果你使用的是MX,也可以不建立第二帧,而是用试验代码代替_root.onEnterFrame=function(){...}中的"
..."
来达到同样的效果:
//①
trace(Key.getCode());
//②
if(Key.isDown(72)){
}
//③
if(Key.isDown(72)&
按下了Ctrl+H组合键"
//④
if(Key.isDown(17)){
temp="
+H"
;
if(Key.isDown(71)){
+G"
按下了Ctrl"
+temp+"
键"
注:
对于MC的
(2)(3)两种情况,可以将keyDown事件改为enterFrame事件,其中
(2)还可以替换为keyUp事件.
附:
键码值表
字母和数字键的键码值(keyCode)
按键
键码
A
65
J
74
S
83
1
49
B
66
K
75
T
84
2
50
C
67
L
76
U
85
3
51
D
68
M
77
V
86
4
52
E
69
78
W
87
5
53
F
70
O
79
X
88
6
54
G
71
P
80
89
7
55
H
72
Q
81
Z
90
8
56
I
73
R
82
48
9
57
数字键盘上的键的键码值(keyCode)
功能键键码值(keyCode)
0
96
104
F1
112
F7
118
97
105
F2
113
F8
119
98
*
106
F3
114
F9
120
99
+
107
F4
115
F10
121
100
Enter
108
F5
116
F11
122
101
109
F6
117
F12
123
102
.
110
103
/
111
控制键键码值(keyCode)
BackSpace
Esc
27
RightArrow
39
-_
189
Tab
Spacebar
32
DownArrow
40
.>
190
Clear
12
PageUp
33
Insert
45
/?
191
13
PageDown
34
Delete
46
`~
192
Shift
16
End
35
NumLock
144
[{
219
Control
17
Home
36
:
186
\|
220
Alt
18
LeftArrow
37
=+
187
]}
221
CapeLock
20
UpArrow
38
<
188
'
222
5.检测碰撞(hitTest)
目前我们见到的射击游戏或打老鼠之类的游戏很多都利用了hitTest,hitTest既可以检测MC与MC的碰撞,也可以检测鼠标与MC的碰撞:
hitTest的语法如下:
(1)myMovieClip.hitTest(x,y,shapeFlag)
这用来检测鼠标的碰撞,x和y分别代表鼠标的横纵坐标,shapeFlag用来规定检测以MovieClip的最大边界为限或以MovieClip的实际边界为限.
(2)myMovieClip.hitTest(target)
检测MC之间的碰撞,应用起来十分简单。
6.MC的复制与卸载
MC的复制,顾名思义就是产生出一个与目标相同的MC(除了name和depth以外),语法为:
duplicateMovieClip(target,newname,depth)
target:
被复制目标的名称;
newname:
复制出的MC的名称;
depth:
复制出的MC的深度.
需要注意,复制出来的新MC的name最好不要相同,也不要与被复制的MC的相同,因为这样会给控制带来不可预期的麻烦;
另外depth也是一个相当重要的参数,如果新复制出的MC与前面某个复制的MC的depth属性相同(即位于通一深度),那么先前被复制的MC将被新复制的MC替换掉(不管他们是否属于同一被复制目标),这个特性经常被我用来制作鼠标跟随的效果,即炫又简单,你试试:
)
再来说说MC的卸载,大家对这个MC的复制的"
双胞胎兄弟"
的重视程度好像远不如他的"
兄长"
因为我经常在论坛中看到类似于"
为什么复制出的MC在跳到其他帧,甚至到其他场景后依然存在?
的问题,其实解决方法很简单,就是MC的卸载:
removeMovieClip(target);
只要将要被卸载的MC的name替换掉语句中的target就可以成功的完成卸载任务。
7.获取影片运行时间
getTimer();
这个函数用以返回自影片开始播放时起已经过的毫秒数,虽然是个很简单的函数,但用利用率却很高,尤其是在一些需要计时的游戏中。
需要说明的是:
毫秒与秒的计算公式为1毫秒=1/1000秒;
函数以影片第一次播放的开始时刻为0,不受任何其他因素影响,也就是说如果你想从头开始计时,那么只有重起player,或者定义一个变量来存放getTimer的值,然后用getTimer与变量做减法运算以便得到新的运行时间,看下面的例子(例5).
8.颜色的设置
说到颜色必须先说说什么是对象,对象就是预先定义好的用来访问某些特定类型的信息的集合,大多数预定义对象都有自己的方法(被指派给一个对象的函数被称为这个对象的一个方法),你可以通过这些方法得到不同类型的返回值或执行某个动作.
预定义对象包括普通对象和顶级对象,普通对象在使用前需要创建(我们将要提到的Color对象就属于这一类),而顶级对象则可以直接调用(入下面要说的Math对象)
下面我们详细介绍一下Color对象,它包含四种方法:
getRGB():
返回由最后一次setRGB调用设置的数值;
getTransform():
返回由最后一次setTransform调用设置的转换值;
setRGB(0xRRGGBB):
指定Color对象实例的RGB颜色,调用此方法会覆盖由setTransform方法设置的任何以前的设置;
setTransform(colorTransformObject):
设置Color对象实例的颜色转换信息colorTransformObject参数是通过newObject构造函数创建的通用对象它具有指定颜色的红、绿、蓝和alpha(透明度)成分百分比和偏移量数值的参数,颜色转换对象的参数与"
高级效果"
对话框中的设置相对应,定义如下:
ra是红色成分的百分比(-100到100)
rb是红色成分的偏移量(-255到255)
ga是绿色成分的百分比(-100到100)
gb是绿色成分的偏移量(-255到255)
ba是蓝色成分的百分比(-100到100)
bb是蓝色成分的偏移量(-255到255)
aa是alpha的百分比(-100到100)
ab是alpha的偏移量(-255到255)
myColorTransform=newObject();
myColorTransform.ra=50;
myColorTransform.rb=244;
myColorTransform.ga=40;
myColorTransform.gb=112;
myColorTransform.ba=12;
myColorTransform.bb=90;
myColorTransform.aa=40;
myColorTransform.ab=70;
也可使用以下语法来创建colorTransformObject参数:
myColorTransform={ra:
50'
rb:
244'
ga:
40'
gb:
112'
ba:
12'
bb:
90'
aa:
ab:
70'
下面的例子展示了为一个目标电影创建一个新的Color对象,使用Object构造器创建一个颜色改变对象以及使用setTransform方法将这个颜色改变对象传递给一个Color对象的过程:
//为目标MC创建一个名为myColord的对象
myColor=newColor(MC);
//使用普通对象Object对象创建一个名为myColorTransform的颜色改变对象
myColorTransform=newObject;
//为myColorTransform设置值
myColorTransform={ra:
};
//将颜色改变对象和为MC创建的颜色对象关联起来
myColor.setTransform(myColorTransform);
.
9.三角函数的运用
三角函数属于Flash中的顶级对象----Math,一提到这个名词很多人是不是会感到"
恐惧"
但在游戏的制作中它可是必不可少的。
这里我们利用Math的atan方法来制作一个永远指向鼠标的指针(例6),其他的三角函数以及数学函数的用法和注意事项请参考附录中的数学函数表.
新建一个MC,画一个长度为70的水平指向右侧的箭头(箭头根部放在中心点上),回到场景,Ctrl+J修改影片的大小为200*200,将指针从库中拖入场景,命名为"
pointer"
修改坐标为100*100,在主timeline的第一帧中写如下AS:
x=_xmouse-100;
y=_ymouse-100;
//将坐标中心移到场景的中心
tan=Math.atan(y/x)*180/Math.PI;
//注意要使用弧度表示的角度值
if(x>
=0&
y>
=0){
r=Math.round(tan);
}elseif(x>
y<
0){
r=Math.round(360+tan);
}else{
r=Math.round(180+tan);
//判断各种不同的情况,通过运算使r值在0-360之间
pointer._rotation=r;
//将r值付给_rotation
放置一个用来显示r值的文本框属性为DynamicText,获取变量(Var)为"
r"
第二帧建立内容帧,Ctrl+Enter测试。
附:
数学函数表(Math)
方法
描述
语法
abs
计算并返回由参数x指定的数字的绝对值.
Math.abs(x)
acos
以弧度为单位计算并返回参数x中指定的数字的反余弦值.
Math.acos(x)
-1.0<
=1.0
asin
以弧度为单位计算并返回参数x中指定的数字的反正弦值.
Math.asin(x)
atan
计算并返回参数x中指定的数字的反正切值.
Math.atan(x)
返回值介于负二分之pi与正二分之pi之间.
atan2
以弧度为单位计算并返回y/x的反正切值.返回值表示相对直角三角形对角的角,其中x是临边边长,而y是对边边长.
Math.atan2(y,x)
x/y分别指定点的x坐标和y坐标
ceil
返回指定数字或表达式的上限值.数字的上限值是大于等于该数字的最接近的整数.
Math.ceil(x)
cos
返回由参数x指定的角的余弦值(介于-1.0与1.0之间的值).必须以弧度为单位指定角度x.
Math.cos(x)
x为弧度,换算公式为:
1弧度=角度*180/Math.PI
exp
返回e的x次方的值,其中e为自然对数的底(e),x为参数x中指定的指数.
Math.exp(x)
常数Math.E可以提供e的值.
floor
返回参数x中指定的数字或表达式的下限值.下限值是小于等于指定数字或表达式的最接近的整数.
Math.floor(x)
表达式:
Math.floor(12.5)将返回值:
log
返回参数x的自然对数.
Math.log(x)
x>
max
返回两个数中最大者
Math.max(x,y)
min
返回两个数中最小者
Math.min(x,y)
pow
计算x的y次幂
Math.pow(x)
random
返回n,其中0<
=n<
1
Math.random()
获得a-b之间的随机整数的公式为:
Math.floor(Math.random()*(b-a+1)+a)
round
将参数x的值向上或向下舍入为最接近的整数并返回值
Math.round(x)
sin
计算并返回以弧度为单位指定的角度的正弦值
Math.sin(x)
换算公式参见cos
sqrt
计算并返回指定数字的平方根
Math.sqrt(x)
=0
tan
计算并返回指定角度的正切值
Math.tan(x)
以上我们向大家介绍了Flash游戏制作中最常用的一些ActionScript,掌握了这些基本控制方法,就可以制作出很多有意思的Flash游戏,同时在制作的过程中你还会发现更多的技巧,欢迎投稿和大家一起交流。
响应键盘的四种方法
响应键盘的方法作为AS中的一个重要组成部分,在如今已经越来越广泛的使用,尤其是在FLASH游戏制作中,如果缺少了响应键盘的方法,那是不可能的,而响应键盘的方法主要的四种,分别是:
1、利用按钮进行检测
2、利用KEY对象
3、利用键盘侦听的方法
4、利用影片剪辑的keyUp和keyDown事件来实现响应键盘
只有熟练掌握了这些方法,然后加以变通的话,就会得到很多意想不到的效果,下面我就结合理论和自己的想法简要的介绍一下。
第一种响应键盘的方法:
利用按钮进行检测来实现响应键盘
在按钮的on事件处理函数中不但可以对鼠标事件作出响应,而且可以对键盘事件作出响应。
如在按钮的动作面板中加入如下所示的代码,在敲击键盘上的X键时输出窗口中将提示:
Xispressed
在按钮上加上:
x"
){trace("
Xispressed"
} 但是要注意的是:
检测键盘上的字母键时,字母都应为小写。
如果要检测键盘中的特殊键,Flash中有一些专门的代码来表示它们,下面列出了一些常用的功能键的表示代码:
如要检测键盘上的键,可以使用下面的ActionScript:
trace("
Leftispressed"
另外,你可以在一个按钮中加入若干个on函数,也可以在一个on函数中结合多种事件,这使您可以为按钮定义自己熟悉常用的快捷键,如下所示:
on(release,keyPress"
_root.myMC.prevFrame();
_root.myMC.nextFrame();
上面的第一个语句实现单击按钮或按键盘上的左方向键,控制影片剪辑myMC回退1帧,而上面的第二个语句实现单击按钮或按键盘上的右方向键,控制影片剪辑myMC前进1帧。
第二种响应键盘的方法:
利用Key对象来实现响应键盘的操作
利用按钮检测
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Flash 游戏 开发 基础