CODEMONKEY 180-185逻辑与事件- 谁动了我的鼠标

CODEMONKEY 180-185逻辑与事件- 谁动了我的鼠标


在这节课中,我们将认识一个新的角色蝙蝠并能够用鼠标移动小猴和蝙蝠。

学习目标:

1、学习了解“mouse-move”事件

2、学习如何利用“mouse-move”事件来移动角色

知识点:

1、今天我们将介绍一个新的事件:“mouse-move”事件,每次用户移动鼠标,它便会触发一个动作。

在CodeMonkey我们需要用鼠标移动来控制某些操作,需要用到函数“onMouseMove”。每次鼠标移动都会调用这个函数,这个函数会携带一个存储有鼠标位置的参数。

进入到180关,我们会看到下面的代码:

onMouseMove = (pos) ->

pos是这个函数的参数,它就是鼠标光标的位置。如果我们想将角色移动到鼠标光标所在的位置,我们首先可以用这个变量让角色面向这个位置,然后可以通过键盘事件控制角色向前移动。

2、 setX 与 setY

【180-185关】CodeMonkey事件处理程序-鼠标移动事件

如上图所示,要把黄色的圆点移动到蓝色圆点处,那么我们需要设置黄色圆点的坐标为(4,1)

yellowDot.setX 4

yellowDot.setY 1

通过setX 与 setY函数来改变角色x,y坐标,从而可以控制角色在屏幕上移动,这个函数的参数就是新的位置坐标。

例如:setX 4 这个例子中setX的参数值为4,我们也可以使用变量作为此函数的参数。例如:SETX pos.x 这样就通过变量pos.x的值改变了x坐标的位置。

实战闯关:

第180关: 使用onMouseMove函数, 根据本关提示,右侧前面这段代码会使小猴转向鼠标移动的方向。我们现在需要完善onKey函数,你也会发现,当你点击其它地方的时候是不允许修改的。

【180-185关】CodeMonkey事件处理程序-鼠标移动事件

我们可以先运行一下程序,发现移动鼠标,小猴就会面向它,很显然我们可以通过鼠标控制小猴移动的方向,那么我们按下键盘希望小猴能够前进(需要我们完善),这样,利用鼠标跟键盘的配合就能让小猴拿到香蕉了。

第181关,让鳄鱼动起来,通过键盘控制小猴前进,使用鼠标控制鳄鱼的方向,这样就能顺利过关了。

【180-185关】CodeMonkey事件处理程序-鼠标移动事件

第182关:使用代码bat.setX,它可以让蝙蝠立即移动!这一关我们会遇到一个新的朋友蝙蝠,没有了乌龟的帮忙,小猴要取到香蕉就只能靠蝙蝠了,让蝙蝠飞到香蕉的位置,然后通过grab()函数拾取香蕉,接下来我们通过鼠标移动,设置蝙蝠的x坐标为鼠标的x坐标,使蝙蝠在水平位置上移动,这样只要把鼠标移动到小猴这里,蝙蝠就会飞过来了。次关卡无需添加代码,需要我们去体会理解setX方法的使用。

【180-185关】CodeMonkey事件处理程序-鼠标移动事件

第183关:根据提示使用j键盘来控制蝙蝠捡起 grab()香蕉,然后我们只需要移动鼠标,让蝙蝠在垂直位置上来回移动,进行香蕉的拾取和运送就好了。

【180-185关】CodeMonkey事件处理程序-鼠标移动事件

回顾如何判断键盘按下的按键是“j”

第184关:本关香蕉跟蝙蝠既不在同一水平线又不在同一垂直线上,为了能够让蝙蝠快速的取到香蕉,我们就需要让蝙蝠能够快速的移动到鼠标所在位置(设置蝙蝠的坐标为鼠标的位置),结合前两关跟我们本节的知识讲解,来完成吧。

【180-185关】CodeMonkey事件处理程序-鼠标移动事件

第185关:这一关与上一关完全一样,需要我们能够自己独立写出完整的代码。用鼠标控制蝙蝠移动,设置一个按键来拾取香蕉,本关就算完成了。

【180-185关】CodeMonkey事件处理程序-鼠标移动事件

思考与练习

1、在这一课中,我们学习了鼠标移动事件。我们现在知道如何使用键盘和鼠标来控制角色,这意味着我们离创造自己的游戏更近了一步!

打开挑战176,尝试使用鼠标移动事件来完成挑战。

解决这个问题的方法之一是:

onMouseMove = (pos) ->

goto pos

通过键盘和鼠标移动小猴去取到香蕉,别忘了去拿药水!

与鼠标移动事件相比,解决这个挑战有什么不同?

●它更快

●我们不需要移动的乌龟

2、练一练,完成本节对应的特技关卡

【180-185关】CodeMonkey事件处理程序-鼠标移动事件

答案

【180-185关】CodeMonkey事件处理程序-鼠标移动事件

【180-185关】CodeMonkey事件处理程序-鼠标移动事件

【180-185关】CodeMonkey事件处理程序-鼠标移动事件

【180-185关】CodeMonkey事件处理程序-鼠标移动事件

【180-185关】CodeMonkey事件处理程序-鼠标移动事件

【180-185关】CodeMonkey事件处理程序-鼠标移动事件