登录后查才能浏览下载更多咨询,有问题联系QQ:3283999
您需要 登录 才可以下载或查看,没有账号?入住遨海湾
×
AS 实战篇( x( l5 e) p# Y# l _
-----------------------------------
% R, Z8 A5 c" o( F2 Z% m" q
9 j& }8 \( N7 ]0 J9 X这次我们要进入实战,我要教你们做一个很简单的游戏,下面的每句代码我都会加上注释,如果你看过上面的教程,我想要全部理解应该不会困难。4 ~9 N. l9 V$ c
现在让我们开始吧。这个游戏是我初学的时候按教程做的一个游戏,所以印象比较深刻。这个游戏叫做蜗牛赛跑,流程是这样的:画面上有若干条赛道,每条赛道上面有一只蜗牛,每只蜗牛爬行的速度不一样。游戏开始了,你要猜猜哪只蜗牛先跑到终点。如果你猜对了,You Win,否则,Game Over。( U6 v/ \# U1 p
第1步,我们先设置场景的大小 600*400 px ,运行速度为 48帧/秒 这个是我个人喜好速度。) {) z6 z* _, P. \4 \; ^! P. F
& c6 M$ \7 F5 t) P) T[img]http://www.aosea.com/attachments/UploadFile/2004-12/2004121618284979.gif[/upload]7 T$ O" i+ u/ M U; ~( U2 {
( r7 M9 m, X# _5 @/ L# `
; I1 `( j# f5 L
第2步,我们把默认的层名称改成Bkground,并且画上赛道、起跑线和终点线,我这里是4条赛道。
9 U9 r1 ? Y. w9 k% [( q# S# x) r8 e: o: a% E
[img]http://www.aosea.com/attachments/UploadFile/2004-12/2004121618284615.gif[/upload]
( B/ m* B! i! ?- q3 V
) \ \' ^( F1 h+ M! x1 r; i# r5 g7 g% ^: x# j' j1 s
第3步,新建一个层,层命名成WN_Layer,然后画一个会动的蜗牛放在这个层,F8定义成MC,MC命名成WN_MC。把蜗牛的尾巴放在整个MC的正中间,如果少了这步,蜗牛还没到终点就结束了。然后复制3个一样的蜗牛,在属性栏里面调整一下颜色,使他们看起来有点区别。然后对齐放到各条赛道的起点位置。% R; B0 v- m6 W
第4步,新建一个层,命名成btn , 然后做一个按钮,复制4个分别放在4个蜗牛的旁边。4 I [# `$ S; c5 v
. K% h7 E6 m/ @* _- |4 V( n[img]http://www.aosea.com/attachments/UploadFile/2004-12/200412161828451.gif[/upload]% c# Y9 ~; O) A/ F
3 D7 p# O+ D) S6 K& K8 W) j. _4 F
" f6 g8 }8 p2 S8 ` n; r' I
第5步,记住蜗牛开始的X轴位置数据,我这里是25,然后把一个蜗牛拖到终点看看它的X轴位置数据多少,然后记下来,为AS做准备。我这里得到的是540。记得把它放回去哦~ - A# }5 h# ?! I7 g4 g! X
[img]http://www.aosea.com/attachments/UploadFile/2004-12/2004121618284508.gif[/upload]
4 r' e4 a7 t4 _% ~. k- I8 A1 [/ b `7 p8 T! S! R3 W3 L
第6步,新建一个层,命名为Actoins,用来写AS的。这个层我们需要4个关键帧。我来讲一下为什么。
( Y. O+ N, u6 w我们需要一个帧来准备开始游戏,也就是让玩家猜的帧,是游戏一开始的蜗牛不动的画面。这个就由第1帧来完成了。我们做的4个按钮也就是要让玩家去猜哪只蜗牛会赢。
2 u% g0 e- X2 \% h9 ?; ?' [' I当游戏开始以后,玩家不能改变数据了,所以在乌龟爬的过程中,按钮层没有内容。9 `* C, a- J o* i" |/ n+ A. z
第2个帧我们要让每个蜗牛都爬一次,为什么只让他们爬一次呢?因为时间轴的指针经过这个关键帧的时候,只让帧里面的AS执行一次而已。为了让蜗牛不断地爬,我们需要重复的让时间指针走过这个第2帧,所以我们第3帧的内容就是要让时间指针回到第2帧。
2 {) K# v" E8 T, g# L; |1 g7 S第3帧以后就是显示结果的帧了,那我们新建一个层,命名show ,做第4跟第5两个关键帧,在第4帧放一个胜利的字样,在第5帧放一个失败的字样。& _2 _# A0 n; Y" ^* ^/ m* L) T$ v
另外在游戏结束后,我们需要一个按钮让玩家再玩一次,所以,按钮层的第 4到5 两个帧需要一个按钮。
2 e, l& i3 J8 K. r9 f1 K$ C7 V' u& r布置完以后,整个层的结构如图(还没有任何 AS):
* m8 f0 o; x v% i6 Y3 `. W$ e/ g' E. h8 L
[img]http://www.aosea.com/attachments/UploadFile/2004-12/2004121618284385.gif[/upload]
7 d' U' i6 i4 h
2 r4 T- z: p; |8 \" i% q$ b1 n5 W& q现在我们有 4 个对象 : _root.wn1 , _root.wn2 , _root.wn3 , _root.wn48 j4 a# ?$ @7 o. y: i
下面我们一帧一帧来做: b0 ~* H6 k# p! ?
Action 第1帧
+ `9 O( g7 ^6 x_root.stop(); //停止时间轴
% ]* x: A9 `/ M. \* i. e+ G- r9 u_root.truewinner = 0; / p- w' C e* Q2 W1 L5 A
_root.guesswinner = 0;$ R9 D* y0 J6 z3 ?% N: |3 H
后面2句代码定义了两个变量truewinner,guesswinner在_root这条时间轴。变量是用来储存数据的,可以自己定义。这里的truewinner,guesswinner分别表示 哪号蜗牛赢了 和 玩家猜的是哪号 。这里初始化了这两个数据。
/ m9 J- b5 u: a1 G: i+ TAction 第2帧
! _# w1 U, `: K9 r_root.wn1._x += random(10)/10+random(1); //蜗牛1号的X轴数据增加某一数值/ D2 N! ?, c/ }* d: h! U' J
_root.wn2._x += random(10)/10+random(1); //蜗牛2号的X轴数据增加某一数值
w) p. E5 \% E/ M7 G q) k4 r; O_root.wn3._x += random(10)/10+random(1); //蜗牛3号的X轴数据增加某一数值
; X% g0 l3 k: ]+ A5 y/ ?: V_root.wn4._x += random(10)/10+random(1); //蜗牛4号的X轴数据增加某一数值: @$ X) _6 H0 ~1 X% z
看过对象篇,这里理解起来不难吧?/ C* ^, U- s' J" H* _" W
_x 表示对象蜗牛的属性之一:X轴的位置。5 ]7 ?1 f* d3 V& W
+= 表示自加 , 这样理解 a=a+1 和 a+=1 是一样的。表示自加1。
7 M, ~2 v8 ~ U- m0 `这里有个方法 , random()8 W* |! h$ P. h$ ]4 x' G
这个方法用来获得一个随机的数字,如 random(10) 获得 0-9 中间的任何一个数字。上面的表达式获得一个从 0-1.9 的一个随机数。
3 P( \, `1 q3 z7 ~9 _Action 第3帧/ ^1 w; m) j3 h: W# N" [! r
if (_root.wn1._x>540) {# C$ T+ y; I/ W
_root.truewinner = 1;, x8 {0 f5 Y1 d
}, J! b7 Y' Z( q4 v! t( q) a0 b
if (_root.wn2._x>540) {
) c' `4 s+ Q5 d/ t% S/ ?_root.truewinner = 2;8 w: W% s" u; f( {/ p
}
0 ~8 J% G/ ]' w3 ?' M" O2 jif (_root.wn3._x>540) {
5 E* b d7 U& I' Q0 a) O_root.truewinner = 3;$ `1 Q# G' w2 B5 y1 v
}
, b! p( @3 N2 H0 ]3 jif (_root.wn4._x>540) {" x% ?: L+ k: o9 H$ S. Z" C
_root.truewinner = 4;! S/ c' \3 D" J8 Y l* A
}
- _1 g" |% D: t \' T2 j- g8 u' a//判断哪只蜗牛到了,到了就改变truewinner的值,纪录哪只蜗牛获胜1 _# T j* i1 h+ f: z, W) f ]
if (_root.truewinner != 0) {' }& d7 A0 @) @" Y7 S% B/ t: w* F
if (_root.guesswinner == _root.truewinner) {
: t+ u$ U8 ]9 ^/ W) Y, ~1 o. } _root.gotoAndStop(4);
0 U. {( l+ Y/ j9 I& C& j0 V& t} else {1 }/ L8 n2 x& w
_root.gotoAndStop(5);
# b9 x& _( b( C}* g$ g& ]! y/ q, u
} else {
+ p9 y& ?( V i' M! R+ d9 r_root.gotoAndPlay(2);
3 K# U6 ]# G3 k8 @! J}* Y( e# R: j8 s0 M1 v% w6 ^
/*-------------------------------------------- ! `- k4 ?) a6 P. Z5 U: g5 K% f0 [
判断truewinner的值,如果被改变了,说明已经有蜗牛到了/ _) L5 s# F# k) {" h9 |8 A
如果还没有改变,说明蜗牛们还没到。
2 a" ?% G4 U; z8 ]如果没到,就把_root的指针跳到第2帧,让他们继续跑,如果到了,5 Y+ z$ D/ `4 [6 c7 u5 M8 j
判断玩家压的那只和真正到的那只是不是一样。如果猜对了,让时间5 v5 L" Q1 @3 w- f
指针跳停到第4帧,否则跳停到第5帧。
7 f. `% i# g9 v; f/ @$ {---------------------------------------------*/
5 ?7 X) Z( s5 k" A$ W仔细理解一下流程,应该不难 , e$ X) K" h2 D& b. _
接下来是按钮上的AS:
7 S5 J( `) N$ ^! s9 ^8 t5 Q- @第1帧的按钮; h: M$ d7 `2 r5 b! }
on(release){3 a- e( z( q& p2 o, [' \7 }. [
_root.play(); T) u/ g5 J& W% t
_root.guesswinner = 1;) c" B& c# u: R
}
3 a' V- l+ @. Q. l: q第一只蜗牛旁边的按钮上面的as。松开按钮后,指针跳到第2帧,然后纪录变量guesswinner为1(猜第1只)。
: q; V' N. _6 T# y1 D: O: d3 v" \其它蜗牛旁边的代码类似,就是纪录变量guesswinner值为相对应的 2、3、4' E" a- l! O2 {
最后一个按钮,用来重玩的。; a: ]5 D! t- G# P% c% T" S
on(release){
; [7 W* E3 x. ~) a9 v* S_root.gotoAndStop(1);5 a; u) j/ ~0 t8 a4 ~: @
_root.wn1._x = 25;//蜗牛1号回起点
5 A, ^% k& y- E% O_root.wn2._x = 25;
9 _/ c7 x l' b" V- U9 b* V: M_root.wn3._x = 25;
: }" |1 d$ t5 F# I0 `2 u; i_root.wn4._x = 25;: t4 R( u0 M' l; [! ]" j S
}9 G' q p3 J k
全部看明白了吧?嗯,看看我做的
! t: a9 Z$ d5 V h这里我就不给源文件了,大家自己动手做做,很有成就感的~
" P% k# R7 y/ Y' C5 @+ b( v$ Q0 E(完)
. G. k6 g( o$ F& z" D) \% h3 C9 Y
% R: }- T' ~9 R8 e9 A
2 \# W' ~' v b[此贴子已经被作者于2004-12-16 18:28:40编辑过] |