您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 商业计划书 > Flash游戏-开发基础
FLASH技巧一—1—目录Flash游戏制作常用代码解析.......................................2FLASH游戏制作基础:响应键盘的四种方法............8Flash游戏制作--空战..................................................11Flash飞行游戏制作全解.............................................18Flash游戏制作--迷宮..................................................28Flash游戏制作规划与流程漫谈.................................35用Flash制作互动的小人.............................................44常见的飞机发射子弹的控制........................................48一个完全使用AS2编制的飞机游戏之制作详解.......49FLASH技巧一—2—Flash游戏制作常用代码解析1.获取随机数随机函数在flash游戏制作中很常用,例如在拼图游戏中,每次开始新的游戏时可以利用随机函数使图块获得新的位置,试想一个千篇一律的游戏谁会有兴趣玩下去。现在我们有两种产生随机数的方式:random()和Math.random(),举例来讲,如果我们相随机赋给x一个0-5的数,我们可以使用x=random(6)或者x=Math.random()*5。但这两种方式产生的随机数是有区别的,用random(6)方法返回的x是0=x=5的整数,而另外一种返回的x则是0=x5的小数。试着在第一帧中写入下面的AS,并在第二帧创建内容帧以形成循环:x=random(6);y=Math.random()*5;trace(x=+x+,y=+y);在output窗口中将得到以下数据:...x=1,y=3.66887632058933x=2,y=4.39878350123763x=0,y=0.522367884404957x=3,y=2.95675310306251x=5,y=4.03038211166859x=2,y=0.223042098805308...区别一目了然。2.获得鼠标及MC(MovieClip)的位置另外一个在flash游戏制作使用频率比较高的参数就是坐标了,鼠标的坐标和MC的坐标的获得方式是不同的,鼠标的坐标可以用_xmouse和_ymouse获得,MC的坐标可以用MovieClip._x和MovieClip._y获得。值得注意的是在获得坐标时要考虑实际需要的坐标值是相对的还是绝对的,下面给出了一个典型的获得鼠标相对坐标和绝对坐标的例子(例1):其中浅色的正方形是一个被命名为mc的MovieClip,四个文本框属性均被设置为DynamicText(请参阅《FlashMX文本工具详解》),场景中的两个用于获得变量x_timeline和y_timeline(绝对坐标),正方形中的两个用于获得变量x_movieclip和y_movieclip(相对坐标),为了获得变量,需要在文本框的属性面板中的Var属性中分别填入相应的变量名,与上面例子形成循环的方式一样,在第一帧中写下面的AS,第二帧创建为内容帧:x_timeline=_root._xmouse;y_timeline=_root._ymouse;x_movieclip=mc._xmouse;y_movieclip=mc._ymouse;注意:场景的坐标原点为其左上角,坐标值向右向下递增,为正值(这与我们通常意义的坐标并不相同);MC的坐标原点是编辑MC时的中心,坐标象限见图1.FLASH技巧一—3—获得MC坐标的方法与上面说的大同小异,我们将在下面的MC属性简介中做介绍。3.MC常用属性简介属性用法说明可获得可设置取值范围_x_yMC._xMC._y返回/设置MC的横纵坐标值YY数值_xscale_yscaleMC._xscaleMC._yscale返回设置MC的x/y轴缩放比例YY数值_alphaMC._alpha返回/设置MC的透明度YY0-100_visibleMC._visible返回/设置MC的可见性YYtrue;false_width_heightMC._widthMC._height返回/设置MC的宽/高值YY数值_rotationMC._rotation返回/设置MC的角度YY数值_currentframeMC._currentframe返回MC的当前帧YN-_totalframesMC._totalframes返回MC的总帧数YN-_framesloadedMC._framesloaded返回已下载帧数YN-_nameMC._name返回/设置MC的名称YY4.判断按键既然是游戏,当然就要响应玩家的各种反应,除了鼠标,最直接的就是键盘了。响应键盘无非是判断玩家按下了哪一个键或者组合键,要实现这些其实很简单,我们既可以通过按钮或MC的事件来响应按键,也可以通过帧上的动作来响应,举例说明:(1)按钮的keyPress方法:先说按钮,按钮除了响应鼠标的一些动作(如:rollOver,release...)之外还有几个是响应固定按键的(如Enter,Left,Home,PageDown...),下面我们就来制作一个。建立一个按钮,拖到场景中,捆绑下面的AS:on(keyPress){trace(按下了Left键);}这样当我们在测试的环境下按下左方向键后,output窗口就会显示出按下了Left键。下面说说怎样使MC响应按键更复杂的按键。(2)MC响应单个按键:onClipEvent(keyDown){if(Key.isDown(72)){trace(按下了H键);FLASH技巧一—4—}}这样在测试的环境下按下H键,output窗口就会显示出按下了H键,其中72是H键的keyCode值(其他按键的keyCode值将在附录中给出),如果不知道某个键的keyCode值也没关系,Flash为我们提供了getCode函数,将上面AS中的72替换成Key.getCode(H)会得到同样的效果。(3)MC响应组合键:onClipEvent(keyDown){if(Key.isDown(72)&&Key.isDown(17)){trace(您按下的组合键是Ctrl+H);}}在测试的环境中按下Ctrl+H键,output窗口就会显示出您按下的组合键是Ctrl+H(4)利用帧上的动作响应按键:新建一个flash文件,利用上面讲过的:在第一帧写AS,第二帧创建内容帧的方法,使影片形成循环以便随时进行判断,然后在第一帧中写入下面的几组代码,分别进行试验;如果你使用的是MX,也可以不建立第二帧,而是用试验代码代替_root.onEnterFrame=function(){...}中的...来达到同样的效果://①trace(Key.getCode());//②if(Key.isDown(72)){trace(按下了H键);}//③if(Key.isDown(72)&&Key.isDown(17)){trace(按下了Ctrl+H组合键);}//④if(Key.isDown(17)){if(Key.isDown(72)){temp=+H;}if(Key.isDown(71)){temp=+G;}trace(按下了Ctrl+temp+键);}注:对于MC的(2)(3)两种情况,可以将keyDown事件改为enterFrame事件,其中(2)还可以替换为keyUp事件.附:键码值表字母和数字键的键码值(keyCode)按键键码按键键码按键键码按键键码A65J74S83149B66K75T84250C67L76U85351D68M77V86452FLASH技巧一—5—E69N78W87553F70O79X88654G71P80Y89755H72Q81Z90856I73R82048957数字键盘上的键的键码值(keyCode)功能键键码值(keyCode)按键键码按键键码按键键码按键键码0968104F1112F71181979105F2113F8119298*106F3114F9120399+107F4115F101214100Enter108F5116F111225101-109F6117F121236102.1107103/111控制键键码值(keyCode)按键键码按键键码按键键码按键键码BackSpace8Esc27RightArrow39-_189Tab9Spacebar32DownArrow40.190Clear12PageUp33Insert45/?191Enter13PageDown34Delete46`~192Shift16End35NumLock144[{219Control17Home36;:186\|220Alt18LeftArrow37=+187]}221CapeLock20UpArrow38,188'2225.检测碰撞(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的深度.FLASH技巧一—6—需要注意,复制出来的新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对象就属于这一类),而顶级对象则可以直接调
本文标题:Flash游戏-开发基础
链接地址:https://www.777doc.com/doc-4970954 .html