本文仅供个人记录和复习,不用于其他用途
游戏效果展示
游戏思路
我们需要一个背景层,用于加载背景图片和回应点击事件。然后就是我们的红包类,用于生成随机位置的红包,并且加载相应的动画。
本篇文章同样是借助了雷过就跑的教程,可以在慕课网上搜索到他的视频,本文所用的资源也可以在课程页面下载。
HelloWorldScene
HelloWorldScene.h
|
|
setBackGround()
用于加载背景图片,其他的已经很熟悉了,不再赘述。
HelloWorldScene.cpp
|
|
首先我们创建一个监听器,用于监听鼠标的单点事件。至于为什么要设置吞噬,那么为了防止事件被其他的监听器使用。随后,使用Lambda表达式快速编写onTouchBegan()
回调函数,那么这里我们用state
来标记状态。当鼠标点击时,如果state
为0,我们就获取触摸点,并且在红包上创建一个矩形区域。如果触摸点在这个矩形区域内,那么就判定我们点中了红包。然后我们将state
变为1,关闭定时器,并且将红包设置在中央,开始播放动画。这里要说明一下,当我们再次点击时,由于state为1,那么我们就会将它改为0,同时将红包初始化,并且开启定时器。这样,我们的红包就又开始四处飘动,成为一个循环。
剩下的工作都很好理解,比如将监听器加到层上,然后创建一个菜单和一个红包,不过这里我们得先将红包隐藏。update()
其实就是随机改变红包的位置,同时将红包设置为可见。而menuCloseCallBack()
就是当你在点击了Click
之后,把菜单隐藏,并且开启定时器。
RedNode
RedNode.h
|
|
红包类用于创建红包,并且播放红包打开的动画。
RedNode.cpp
|
|
loadAnimate()
用于加载动画,我们获取了精灵帧缓存,并且创建了一个Vector
用于存储精灵帧。随后我们将图片载入精灵帧缓存,并且加入到frameArray
中。接下来,我们使用这个容器来创建一个动画,设置相应的参数。不过,如果要播放动画的话需要动画动作,这里一定要给动画动作加一个计数,因为动作并没有在当前使用,而是被playAnimate()
所使用。
playAnimate()
这里要说的就是CallFunc
和Sequence
这两个,CallFunc
是回调函数,而Sequence
代表一个序列,按顺序执行里面的内容。那么这里就是执行完红包动画后,在红包上显示一串数字,也就是所得的钱数。CallFunc
和Sequence
之后会详细介绍。
aniCallBack()
和addTitle()
很简单,setDefault()
用于红包的初始化。首先将背景图去除,然后重新加载,设置相应的参数。这里要注意的是,如果不是第一次打开红包,那么title
中已经有了上一次的内容,所以应该隐藏。
总结
这一次将动画的内容实地的演练了一遍,加强了动画相关的运用。动画的加载与播放在实际中是分开的,这一点与我们之前加载完就马上用是不一样的。