加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

做一个像植物大战僵尸的Flash游戏3

发布时间:2020-12-15 06:48:08 所属栏目:百科 来源:网络整理
导读:?http://bbs.9ria.com/thread-81770-1-5.html 查看该系列的其它文章: 做一个像植物大战僵尸的Flash游戏1 做一个像植物大战僵尸的Flash游戏2 做一个像植物大战僵尸的Flash游戏3 做一个像植物大战僵尸的Flash游戏4 做一个像植物大战僵尸的Flash游戏5 现在我们

?http://bbs.9ria.com/thread-81770-1-5.html

查看该系列的其它文章:
做一个像植物大战僵尸的Flash游戏1
做一个像植物大战僵尸的Flash游戏2
做一个像植物大战僵尸的Flash游戏3
做一个像植物大战僵尸的Flash游戏4
做一个像植物大战僵尸的Flash游戏5

现在我们来到了这个系列教程的第三步。在这部分中,我们我会安置所买的植物,并且让僵尸出场。

增加一个僵尸是相当的容易因为处理僵尸问题跟处理阳光问题一样。就像阳光出现在舞台的顶部之外,然后落下。僵尸出现在舞台右边之外,然后往左移动。然而他们之

间不会相互配合。

至于安置植物,我们必须确保当玩家拖动植物,然后按下鼠标时,植物将要被安置的区块必须没有其它植物并且在游戏区域内。然后,植物就被安置好了,选择器和侦听

器也随之被移除。接着,玩家继续收集阳光并且选择一种植物(现在只有一种)安置到游戏区域里。

我对代码进行了注释来帮助你明白代码都做了些什么。

  1. package {
  2. ? ? ? ? import flash.display.Sprite;
  3. ? ? ? ? import flash.utils.Timer;
  4. ? ? ? ? import flash.events.TimerEvent;
  5. ? ? ? ? import flash.events.MouseEvent;
  6. ? ? ? ? import flash.events.Event;
  7. ? ? ? ? import flash.text.TextField;
  8. ? ? ? ? public class Main extends Sprite {
  9. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //一个2维数组用来存储游戏区块
  10. ? ? ? ? ? ? ? ? private var gameField:Array;
  11. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //计时器,使得阳光落下
  12. ? ? ? ? ? ? ? ? private var flowersTimer:Timer=new Timer(5000);
  13. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //计时器,让僵尸出场
  14. ? ? ? ? ? ? ? ? private var zombieTimer:Timer=new Timer(5000);
  15. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //所有阳光的容器
  16. ? ? ? ? ? ? ? ? private var sunContainer:Sprite=new Sprite();
  17. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //所有植物的容器
  18. ? ? ? ? ? ? ? ? private var plantContainer:Sprite=new Sprite();
  19. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //所有僵尸的容器
  20. ? ? ? ? ? ? ? ? private var zombieContainer:Sprite=new Sprite();
  21. ? ? ? ? ? ? ? ? //阳光
  22. ? ? ? ? ? ? ? ? private var sun:sunMc;
  23. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //植物栏上的植物
  24. ? ? ? ? ? ? ? ? private var plant:plantMc;
  25. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //玩家在游戏区域能够拖动的植物
  26. ? ? ? ? ? ? ? ? private var movingPlant:plantMc;
  27. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //选择器(一个高亮的区块),告诉玩家他将把植物种在哪个区块
  28. ? ? ? ? ? ? ? ? private var selector:selectorMc;
  29. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //玩家所拥有的金钱数量
  30. ? ? ? ? ? ? ? ? private var money:uint=0;
  31. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //动态文本框,用来显示玩家的金钱
  32. ? ? ? ? ? ? ? ? private var moneyText:TextField=new TextField??;
  33. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //布尔型变量,标志玩家是否在移动一个植物
  34. ? ? ? ? ? ? ? ? private var playerMoving:Boolean=false;
  35. ? ? ? ? ? ? ? ? public function Main():void {
  36. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //初始化游戏区块
  37. ? ? ? ? ? ? ? ? ? ? ? ? setupField();
  38. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //画出游戏区块
  39. ? ? ? ? ? ? ? ? ? ? ? ? drawField();
  40. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //处理下落的阳光
  41. ? ? ? ? ? ? ? ? ? ? ? ? fallingSuns();
  42. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //添加所有文本(此刻只有金钱的数量)
  43. ? ? ? ? ? ? ? ? ? ? ? ? addText();
  44. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //增加植物的函数
  45. ? ? ? ? ? ? ? ? ? ? ? ? addPlants();
  46. ? ? ? ? ? ? ? ? ? ? ? ? //增加僵尸的函数
  47. ? ? ? ? ? ? ? ? ? ? ? ? addZombies();
  48. ? ? ? ? ? ? ? ? ? ? ? ? //注册侦听器,进入游戏循环
  49. ? ? ? ? ? ? ? ? ? ? ? ? addEventListener(Event.ENTER_FRAME,onEnterFrm);
  50. ? ? ? ? ? ? ? ? }
  51. ? ? ? ? ? ? ? ? private function setupField():void {
  52. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //创建一个5行9列的矩阵,并将矩阵内的每个值初始化为0
  53. ? ? ? ? ? ? ? ? ? ? ? ? gameField=new Array();
  54. ? ? ? ? ? ? ? ? ? ? ? ? for (var i:uint=0; i<5; i++) {
  55. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? gameField[i]=new Array();
  56. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? for (var j:uint=0; j<9; j++) {
  57. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? gameField[i][j]=0;
  58. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
  59. ? ? ? ? ? ? ? ? ? ? ? ? }
  60. ? ? ? ? ? ? ? ? }
  61. ? ? ? ? ? ? ? ? private function addText():void {
  62. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //增加一个动态文本框
  63. ? ? ? ? ? ? ? ? ? ? ? ? addChild(moneyText);
  64. ? ? ? ? ? ? ? ? ? ? ? ? updateMoney();
  65. ? ? ? ? ? ? ? ? ? ? ? ? moneyText.textColor=0xFFFFFF;
  66. ? ? ? ? ? ? ? ? ? ? ? ? moneyText.height=20;
  67. ? ? ? ? ? ? ? ? }
  68. ? ? ? ? ? ? ? ? private function updateMoney():void {
  69. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //把玩家所拥有的金钱数量写到文本框里
  70. ? ? ? ? ? ? ? ? ? ? ? ? moneyText.text="Money: "+money.toString();
  71. ? ? ? ? ? ? ? ? }
  72. ? ? ? ? ? ? ? ? private function drawField():void {
  73. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //画游戏区块,当你有自己的素材时,你可以重写这些代码
  74. ? ? ? ? ? ? ? ? ? ? ? ? var fieldSprite:Sprite=new Sprite();
  75. ? ? ? ? ? ? ? ? ? ? ? ? var randomGreen:Number;
  76. ? ? ? ? ? ? ? ? ? ? ? ? addChild(fieldSprite);
  77. ? ? ? ? ? ? ? ? ? ? ? ? fieldSprite.graphics.lineStyle(1,0xFFFFFF);
  78. ? ? ? ? ? ? ? ? ? ? ? ? for (var i:uint=0; i<5; i++) {
  79. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? for (var j:uint=0; j<9; j++) {
  80. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? randomGreen=(125+Math.floor(Math.random()*50))*256;
  81. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fieldSprite.graphics.beginFill(randomGreen);
  82. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fieldSprite.graphics.drawRect(25+65*j,80+75*i,65,75);
  83. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
  84. ? ? ? ? ? ? ? ? ? ? ? ? }
  85. ? ? ? ? ? ? ? ? }
  86. ? ? ? ? ? ? ? ? private function addZombies():void {
  87. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //增加僵尸容器
  88. ? ? ? ? ? ? ? ? ? ? ? ? addChild(zombieContainer);
  89. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //启动计时器,使僵尸出场
  90. ? ? ? ? ? ? ? ? ? ? ? ? zombieTimer.start();
  91. ? ? ? ? ? ? ? ? ? ? ? ? //注册侦听器
  92. ? ? ? ? ? ? ? ? ? ? ? ? zombieTimer.addEventListener(TimerEvent.TIMER,newZombie);
  93. ? ? ? ? ? ? ? ? }
  94. ? ? ? ? ? ? ? ? private function newZombie(e:TimerEvent):void {
  95. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //创建一个僵尸
  96. ? ? ? ? ? ? ? ? ? ? ? ? var zombie:zombieMc=new zombieMc();
  97. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //把僵尸加入到显示列表
  98. ? ? ? ? ? ? ? ? ? ? ? ? zombieContainer.addChild(zombie);
  99. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //生成随机行数,用于放置僵尸
  100. ? ? ? ? ? ? ? ? ? ? ? ? var row:uint=Math.floor(Math.random()*5);
  101. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //把僵尸放在屏幕的右边
  102. ? ? ? ? ? ? ? ? ? ? ? ? zombie.x=660;
  103. ? ? ? ? ? ? ? ? ? ? ? ? zombie.y=row*75+115;
  104. ? ? ? ? ? ? ? ? }
  105. ? ? ? ? ? ? ? ? private function fallingSuns():void {
  106. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //增加阳光容器
  107. ? ? ? ? ? ? ? ? ? ? ? ? addChild(sunContainer);
  108. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //启动计时器,使得阳光落下
  109. ? ? ? ? ? ? ? ? ? ? ? ? flowersTimer.start();
  110. ? ? ? ? ? ? ? ? ? ? ? ? //注册Timer事件,触发事件侦听函数
  111. ? ? ? ? ? ? ? ? ? ? ? ? flowersTimer.addEventListener(TimerEvent.TIMER,newSun);
  112. ? ? ? ? ? ? ? ? }
  113. ? ? ? ? ? ? ? ? private function newSun(e:TimerEvent):void {
  114. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //为新生的阳光选择目标位置,包括行号和列号
  115. ? ? ? ? ? ? ? ? ? ? ? ? var sunRow:uint=Math.floor(Math.random()*5);
  116. ? ? ? ? ? ? ? ? ? ? ? ? var sunCol:uint=Math.floor(Math.random()*9);
  117. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //创建阳光
  118. ? ? ? ? ? ? ? ? ? ? ? ? sun = new sunMc();
  119. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //当鼠标滑过阳光时,改变鼠标的形状
  120. ? ? ? ? ? ? ? ? ? ? ? ? sun.buttonMode=true;
  121. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //把阳光加入到显示列表
  122. ? ? ? ? ? ? ? ? ? ? ? ? sunContainer.addChild(sun);
  123. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //把阳光放在合适的位置
  124. ? ? ? ? ? ? ? ? ? ? ? ? sun.x=52+sunCol*65;
  125. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //定义阳光destinationY属性
  126. ? ? ? ? ? ? ? ? ? ? ? ? sun.destinationY=130+sunRow*75;
  127. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //把阳光放在舞台顶部的上方
  128. ? ? ? ? ? ? ? ? ? ? ? ? sun.y=-20;
  129. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //给阳光注册鼠标点击事件
  130. ? ? ? ? ? ? ? ? ? ? ? ? sun.addEventListener(MouseEvent.CLICK,sunClicked);
  131. ? ? ? ? ? ? ? ? }
  132. ? ? ? ? ? ? ? ? private function sunClicked(e:MouseEvent):void {
  133. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //移除鼠标事件侦听
  134. ? ? ? ? ? ? ? ? ? ? ? ? e.currentTarget.removeEventListener(MouseEvent.CLICK,sunClicked);
  135. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //让玩家赚到5个金币
  136. ? ? ? ? ? ? ? ? ? ? ? ? money+=5;
  137. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //更新动态文本
  138. ? ? ? ? ? ? ? ? ? ? ? ? updateMoney();
  139. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //获得我们必须移除的阳光
  140. ? ? ? ? ? ? ? ? ? ? ? ? var sunToRemove:sunMc=e.currentTarget as sunMc;
  141. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //移除该阳光
  142. ? ? ? ? ? ? ? ? ? ? ? ? sunContainer.removeChild(sunToRemove);
  143. ? ? ? ? ? ? ? ? }
  144. ? ? ? ? ? ? ? ? private function addPlants():void {
  145. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //增加植物容器
  146. ? ? ? ? ? ? ? ? ? ? ? ? addChild(plantContainer);
  147. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //创建一个新的植物
  148. ? ? ? ? ? ? ? ? ? ? ? ? plant=new plantMc();
  149. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //把新植物加入到显示列表
  150. ? ? ? ? ? ? ? ? ? ? ? ? plantContainer.addChild(plant);
  151. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //使鼠标改变形状,当它滑过新植物时
  152. ? ? ? ? ? ? ? ? ? ? ? ? plant.buttonMode=true;
  153. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //放置植物
  154. ? ? ? ? ? ? ? ? ? ? ? ? plant.x=90;
  155. ? ? ? ? ? ? ? ? ? ? ? ? plant.y=40;
  156. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //给新植物注册鼠标点击事件
  157. ? ? ? ? ? ? ? ? ? ? ? ? plant.addEventListener(MouseEvent.CLICK,onPlantClicked);
  158. ? ? ? ? ? ? ? ? }
  159. ? ? ? ? ? ? ? ? private function onPlantClicked(e:MouseEvent):void {
  160. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //检查玩家是否有足够的钱(当前是10)来购买植物,并且是否正在拖动一个植物
  161. ? ? ? ? ? ? ? ? ? ? ? ? if (money>=10&&! playerMoving) {
  162. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//付款
  163. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? money-=10;
  164. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //更新动态文本
  165. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? updateMoney();
  166. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //创建一个新的选择器
  167. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? selector=new selectorMc();
  168. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //使选择器不可见
  169. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? selector.visible=false;
  170. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //把选择器加入到显示列表
  171. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? plantContainer.addChild(selector);
  172. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //构建一个新的供玩家拖动的植物
  173. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? movingPlant=new plantMc();
  174. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //给该植物注册一个鼠标点击事件
  175. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? movingPlant.addEventListener(MouseEvent.CLICK,placePlant);
  176. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //把该植物加入到显示列表
  177. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? plantContainer.addChild(movingPlant);
  178. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //告诉脚本正在移动一株植物
  179. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? playerMoving=true;
  180. ? ? ? ? ? ? ? ? ? ? ? ? }
  181. ? ? ? ? ? ? ? ? }
  182. ? ? ? ? ? ? ? ? private function placePlant(e:MouseEvent):void {
  183. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //根据鼠标的位置来判断植物将要被种植在哪个区块
  184. ? ? ? ? ? ? ? ? ? ? ? ? var plantRow:int=Math.floor((mouseY-80)/75);
  185. ? ? ? ? ? ? ? ? ? ? ? ? var plantCol:int=Math.floor((mouseX-25)/65);
  186. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?//检查该区块是否位于游戏区域内,并且该区块没有其它植物存在
  187. ? ? ? ? ? ? ? ? ? ? ? ? if (plantRow>=0&&plantCol>=0&&plantRow<5&&plantCol<9&&gameField[plantRow][plantCol]==0) {
  188. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//构建一株植物,用来种植
  189. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var placedPlant:plantMc=new plantMc();
  190. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //把该植物加入到显示列表
  191. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? plantContainer.addChild(placedPlant);
  192. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //放置该植物
  193. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? placedPlant.x=plantCol*65+57;
  194. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? placedPlant.y=plantRow*75+115;
  195. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //告诉脚本玩家停止移动植物了
  196. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? playerMoving=false;
  197. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //移除供玩家拖动的植物的事件侦听
  198. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? movingPlant.removeEventListener(MouseEvent.CLICK,placePlant);
  199. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //把选择器从显示列表移除
  200. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? plantContainer.removeChild(selector);
  201. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //把供玩家拖动的植物移出显示列表
  202. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? plantContainer.removeChild(movingPlant);
  203. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //更新游戏区域信息
  204. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? gameField[plantRow][plantCol]=1;
  205. ? ? ? ? ? ? ? ? ? ? ? ? }
  206. ? ? ? ? ? ? ? ? }
  207. ? ? ? ? ? ? ? ? private function onEnterFrm(e:Event):void {
  208. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //循环,遍历所有的僵尸
  209. ? ? ? ? ? ? ? ? ? ? ? ? for (var i:uint=0; i<zombieContainer.numChildren; i++) {
  210. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var movingZombie:zombieMc=zombieContainer.getChildAt(i) as zombieMc;
  211. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//把所有的僵尸向左移动二分之一个像素
  212. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? movingZombie.x-=0.5;
  213. ? ? ? ? ? ? ? ? ? ? ? ? }
  214. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //循环,遍历所有的阳光
  215. ? ? ? ? ? ? ? ? ? ? ? ? for (i=0; i<sunContainer.numChildren; i++) {
  216. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var fallingSun:sunMc=sunContainer.getChildAt(i) as sunMc;
  217. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//如果阳光仍然在下落,它还没到达目的地
  218. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (fallingSun.y<fallingSun.destinationY) {
  219. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//把阳光往下移一个像素
  220. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fallingSun.y++;
  221. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//如果阳光不在下落了
  222. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } else {
  223. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//使阳光逐渐消失
  224. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fallingSun.alpha-=0.01;
  225. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//如果阳光完全消失了
  226. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (fallingSun.alpha<0) {
  227. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//移除该阳光的事件侦听
  228. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fallingSun.removeEventListener(MouseEvent.CLICK,sunClicked);
  229. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//把该束阳光移出显示列表
  230. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? sunContainer.removeChild(fallingSun);
  231. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
  232. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
  233. ? ? ? ? ? ? ? ? ? ? ? ? }
  234. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //如果玩家正在移动一株植物
  235. ? ? ? ? ? ? ? ? ? ? ? ? if (playerMoving) {
  236. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//使植物跟随鼠标
  237. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? movingPlant.x=mouseX;
  238. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? movingPlant.y=mouseY;
  239. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//判断当前鼠标滑过哪一个区块
  240. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var plantRow:int=Math.floor((mouseY-80)/75);
  241. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var plantCol:int=Math.floor((mouseX-25)/65);
  242. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//如果这个区块在游戏区域内
  243. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (plantRow>=0&&plantCol>=0&&plantRow<5&&plantCol<9) {
  244. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//使选择器可见
  245. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? selector.visible=true;
  246. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//把选择器放在被选择的区块上
  247. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? selector.x=25+plantCol*65;
  248. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? selector.y=80+plantRow*75;
  249. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } else {
  250. ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//使选择器不可见
  251. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? selector.visible=false;
  252. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
  253. ? ? ? ? ? ? ? ? ? ? ? ? }
  254. ? ? ? ? ? ? ? ? }
  255. ? ? ? ? }
  256. }
复制代码
下面是结果:


收集阳光并且安置植物当僵尸到达时。
下载源代码。下一次,我们将会与僵尸作战! 译者注: 有人问,为什么不面象对象呢?为什么把代码全部写到一个类里,这多少不容易扩展和维护啊。 恩。这个问题你得问原作者了。因为我这只是翻译。 但是,我倒是可以理解。原作者这么写,但是他把所有主要的东西都写出来了。当你要具体把这个游戏完整的做出来的时候,你得靠自己来设计,来架构。显然原作者是目的并不是教授游戏设计,游戏架构的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读