登录后查才能浏览下载更多咨询,有问题联系QQ:3283999
您需要 登录 才可以下载或查看,没有账号?入住遨海湾
×
AS 实战篇
% U8 N, L; ^# c9 Q# a-----------------------------------% J( p* Z1 P0 c4 R7 S! T
$ }) X- l* f/ I这次我们要进入实战,我要教你们做一个很简单的游戏,下面的每句代码我都会加上注释,如果你看过上面的教程,我想要全部理解应该不会困难。1 j6 h& V* T* k0 c- Y. O8 C- F
现在让我们开始吧。这个游戏是我初学的时候按教程做的一个游戏,所以印象比较深刻。这个游戏叫做蜗牛赛跑,流程是这样的:画面上有若干条赛道,每条赛道上面有一只蜗牛,每只蜗牛爬行的速度不一样。游戏开始了,你要猜猜哪只蜗牛先跑到终点。如果你猜对了,You Win,否则,Game Over。
0 z% Q ^/ d' i5 f第1步,我们先设置场景的大小 600*400 px ,运行速度为 48帧/秒 这个是我个人喜好速度。
2 b5 K8 @1 Y0 W2 M- i- I3 b5 Y/ ]4 e) n$ g
[img]http://www.aosea.com/attachments/UploadFile/2004-12/2004121618284979.gif[/upload]
. s0 @ N& ~) N& u! U1 P: I8 [; {! W2 h6 @; P
, N8 |4 P! s5 Q; { Q$ l0 } l" s第2步,我们把默认的层名称改成Bkground,并且画上赛道、起跑线和终点线,我这里是4条赛道。
' ~3 L. Y4 d3 u3 d0 p$ a8 z) H( }$ E8 m
[img]http://www.aosea.com/attachments/UploadFile/2004-12/2004121618284615.gif[/upload]! b' Y& U6 H" z* o9 C
3 C1 V2 _! C3 k7 l7 V2 P
/ D) V, [; B. \( B( ]# }第3步,新建一个层,层命名成WN_Layer,然后画一个会动的蜗牛放在这个层,F8定义成MC,MC命名成WN_MC。把蜗牛的尾巴放在整个MC的正中间,如果少了这步,蜗牛还没到终点就结束了。然后复制3个一样的蜗牛,在属性栏里面调整一下颜色,使他们看起来有点区别。然后对齐放到各条赛道的起点位置。& w2 s# Z1 R z( p: g5 T
第4步,新建一个层,命名成btn , 然后做一个按钮,复制4个分别放在4个蜗牛的旁边。
9 W3 L& _: R Q" o
& p0 a: [# h2 E* n9 ^" A5 J7 W[img]http://www.aosea.com/attachments/UploadFile/2004-12/200412161828451.gif[/upload]
0 |) x( D( k; c. r4 s* A8 \ ?9 q) u; _0 e _6 e% o
~0 C" i7 G& Z) u' G/ L, g6 O
第5步,记住蜗牛开始的X轴位置数据,我这里是25,然后把一个蜗牛拖到终点看看它的X轴位置数据多少,然后记下来,为AS做准备。我这里得到的是540。记得把它放回去哦~ 3 b |: \/ D3 T6 n
[img]http://www.aosea.com/attachments/UploadFile/2004-12/2004121618284508.gif[/upload]0 i" a3 T5 c7 a# u$ t8 a
& W. i- R) b0 r9 c, h
第6步,新建一个层,命名为Actoins,用来写AS的。这个层我们需要4个关键帧。我来讲一下为什么。
) |8 O: u6 G3 Q" M) i我们需要一个帧来准备开始游戏,也就是让玩家猜的帧,是游戏一开始的蜗牛不动的画面。这个就由第1帧来完成了。我们做的4个按钮也就是要让玩家去猜哪只蜗牛会赢。
" K9 _3 [: `# h8 F- J当游戏开始以后,玩家不能改变数据了,所以在乌龟爬的过程中,按钮层没有内容。% n% N1 P- X1 I3 G" }$ \# C1 [
第2个帧我们要让每个蜗牛都爬一次,为什么只让他们爬一次呢?因为时间轴的指针经过这个关键帧的时候,只让帧里面的AS执行一次而已。为了让蜗牛不断地爬,我们需要重复的让时间指针走过这个第2帧,所以我们第3帧的内容就是要让时间指针回到第2帧。
) {1 w5 F% f$ u8 l% U第3帧以后就是显示结果的帧了,那我们新建一个层,命名show ,做第4跟第5两个关键帧,在第4帧放一个胜利的字样,在第5帧放一个失败的字样。1 {; o- F q, e3 ]* L
另外在游戏结束后,我们需要一个按钮让玩家再玩一次,所以,按钮层的第 4到5 两个帧需要一个按钮。: k4 Q' O( R( H; ?. d
布置完以后,整个层的结构如图(还没有任何 AS):
# b& O2 {& T+ Y1 F2 S2 S, _
: b6 {, {! |; C' H' D[img]http://www.aosea.com/attachments/UploadFile/2004-12/2004121618284385.gif[/upload] , p& M2 x1 q* {& r1 o5 v: l% T
. L W: ]( x2 Y7 v# k1 U! H: u
现在我们有 4 个对象 : _root.wn1 , _root.wn2 , _root.wn3 , _root.wn4
9 ?6 n: B( F3 W1 K& K/ |* S; Q2 b下面我们一帧一帧来做:
2 F. [# Y. j, sAction 第1帧5 G3 O4 L; i) }
_root.stop(); //停止时间轴5 q9 v1 E4 `* w, Z( ]1 @! O" ]
_root.truewinner = 0; % y& F, E- z+ F3 H& P& L3 p
_root.guesswinner = 0;
. J f. z+ H' i" G% d# ^7 e后面2句代码定义了两个变量truewinner,guesswinner在_root这条时间轴。变量是用来储存数据的,可以自己定义。这里的truewinner,guesswinner分别表示 哪号蜗牛赢了 和 玩家猜的是哪号 。这里初始化了这两个数据。
0 v2 @* i" {, [% p+ RAction 第2帧7 V# W! O% b) @) L! d) f
_root.wn1._x += random(10)/10+random(1); //蜗牛1号的X轴数据增加某一数值
5 g) R) i# `1 o/ \6 Q9 U_root.wn2._x += random(10)/10+random(1); //蜗牛2号的X轴数据增加某一数值
3 ^# K2 z) \: s$ N_root.wn3._x += random(10)/10+random(1); //蜗牛3号的X轴数据增加某一数值, V! r4 A+ E2 B: E6 {% V2 q
_root.wn4._x += random(10)/10+random(1); //蜗牛4号的X轴数据增加某一数值
6 z% e& t* v1 x: l. B$ T看过对象篇,这里理解起来不难吧?
" s& i0 _( R0 C2 n& g_x 表示对象蜗牛的属性之一:X轴的位置。
7 a- b- ~# ]2 s0 x$ X g+= 表示自加 , 这样理解 a=a+1 和 a+=1 是一样的。表示自加1。1 g3 U) q$ K# h9 b6 Y
这里有个方法 , random()5 D# A, ^7 f7 H
这个方法用来获得一个随机的数字,如 random(10) 获得 0-9 中间的任何一个数字。上面的表达式获得一个从 0-1.9 的一个随机数。
" P, z/ N. [' U! S3 cAction 第3帧) R/ r0 B6 [4 M1 n
if (_root.wn1._x>540) {
6 P* Z" H! p V* w3 k! G& Q_root.truewinner = 1;+ s |0 {" F- d
}
1 O d0 @: R& f- M$ \, vif (_root.wn2._x>540) {( f3 s) S. ?+ p( F
_root.truewinner = 2;
8 x6 O& o N2 Z' n1 h}
' R1 K9 |1 _2 ]3 \if (_root.wn3._x>540) {/ F" m$ v5 x) ?3 ]2 S7 S4 K
_root.truewinner = 3;# c5 `* K- R+ }. Y2 s
}
4 Z1 |. W, e7 L$ x) xif (_root.wn4._x>540) {
( M0 @" }- Y) i' @- J_root.truewinner = 4; U6 P2 Q6 F( a! X: h( Z) k
}8 l# ]+ |# Y' X! K
//判断哪只蜗牛到了,到了就改变truewinner的值,纪录哪只蜗牛获胜
) M. R/ I) {4 y6 J, ]9 rif (_root.truewinner != 0) {; A; X5 Z5 M6 g4 m6 Z3 K
if (_root.guesswinner == _root.truewinner) {3 n9 O1 b |9 v/ o
_root.gotoAndStop(4);
* `. ~, ~; j/ F. Q. G6 E, |} else {* O) p8 ]8 b* @4 O
_root.gotoAndStop(5);
' p a `, B- E- ?% x- p}
. T8 m/ ]3 w- G2 z7 P} else {
2 t0 m; P0 t2 \1 e* w_root.gotoAndPlay(2);
( u6 j! {% v2 l* l) X}
% A" ]0 H3 N" k& h. E/*-------------------------------------------- & I" D8 l& V" o- x& Q& q7 [
判断truewinner的值,如果被改变了,说明已经有蜗牛到了8 t( W7 W8 m2 f! L( \) O
如果还没有改变,说明蜗牛们还没到。0 B5 `4 R6 F0 q6 ]
如果没到,就把_root的指针跳到第2帧,让他们继续跑,如果到了,* r; Y; t! t3 o
判断玩家压的那只和真正到的那只是不是一样。如果猜对了,让时间 {5 ?0 B6 l' B; v
指针跳停到第4帧,否则跳停到第5帧。& @/ f* z) a$ F
---------------------------------------------*/ H' w0 |1 g- h0 n8 N
仔细理解一下流程,应该不难
5 j' y, i c; L7 u) ?$ t8 t( h" W2 @ X接下来是按钮上的AS:
/ J0 C7 a. Z1 d" c0 _第1帧的按钮$ q9 k* X# Z4 \& R
on(release){; i+ \$ s+ x* g0 B
_root.play();# @. I" {- f0 |
_root.guesswinner = 1;: {) N8 E% y4 ?2 p( D1 s' v1 N
}
0 Z5 V$ J) l+ K4 t第一只蜗牛旁边的按钮上面的as。松开按钮后,指针跳到第2帧,然后纪录变量guesswinner为1(猜第1只)。2 C$ `5 d/ o& p8 p2 F: V2 a
其它蜗牛旁边的代码类似,就是纪录变量guesswinner值为相对应的 2、3、4
0 n; i. M1 [6 R6 h5 u4 z最后一个按钮,用来重玩的。
3 S+ k9 [7 x/ ?) Ton(release){
+ z! g, H) t' @: a! A5 I/ z_root.gotoAndStop(1);8 l8 I5 K7 E: y* G, i
_root.wn1._x = 25;//蜗牛1号回起点* e3 [6 m" h, S% n0 \1 D
_root.wn2._x = 25;
1 b. H) c% E% z7 w) \# z_root.wn3._x = 25;
7 e7 ~5 U) u. f& O6 I( J: N_root.wn4._x = 25;' x, |' ~ g3 B4 W) R; S: @
}
: ]9 d( c. P; X+ R) o全部看明白了吧?嗯,看看我做的
2 z3 M; F% F; R) \8 ~* f' p这里我就不给源文件了,大家自己动手做做,很有成就感的~ 3 s$ a9 N! B; v( j* R# P5 s$ K
(完)
[% H6 l# v% i6 L
; L2 V9 H* ]) Y
1 F: z1 R1 [" B2 W) X# j- m[此贴子已经被作者于2004-12-16 18:28:40编辑过] |