1.来源

QuickV3 sample项目中的2048样例游戏,以及最近《最强大脑》娱乐节目。将2048改造成一款挑战玩家对数字记忆的小游戏。

邮箱:appdevzw@163.com

微信公众号:HopToad

APK下载地址:http://download.csdn.net/detail/notbaron/8446223

源码下载地址:http://download.csdn.net/detail/notbaron/8446213

2.逻辑

可选择简单,中等,困难三种难度游戏。

开局UI



每种难度进入后有多个选项如下:




2.1gridshow

每一块数字是报错在全局变量gridshow 数字中,其中元素是一个cell的table类型。

Cell表类型中有一个块大小,一个背景,一个数字,另加一个layer(用于实现触摸输入),一个index(用于调试,显示块),一个输入控件(用于输入)

全局变量grid中保存所有显示的数字。通过调用initGrid函数返回得到。

3.游戏开始

点击begin后,显示如下




3秒后显示如下




3.13秒倒计时到后

取消定时器。

self:removeChild(timelabel)

self:createTipLabel("请填入看到的9个数字")

self:createGridHide();

grid=initGrid(3,3,"点击\n输入")

self:createGridShowSize(20)

self:createinput()

print("unschedule")

其中createInput函数调用addCellTouch函数,该函数实现增加触摸及输入控件添加。

4.填入数字

4.1 创建输入控件

通过cc.ui.UIInput.new(options)新建一个输入控件。其中参数 options table 类型,可选值如下:

·image: 输入框的图像,可以是图像名或是 display.newScale9Sprite() 创建的Sprite9Scale 对象。

·imagepressed: 输入状态时输入框显示的图像(可选)

·imagedisabled: 禁止状态时输入框显示的图像(可选)

·listener: 回调函数,监听输入事件(可选)

·size: 输入框的尺寸,用 cc.size(宽度,高度) 创建

·x,y: 坐标(可选)

我们来看看如何简单的创建一个输入控件,在MainScenector中加入下面代码

1

2

3

4

5

6

7

local editBox = cc.ui.UIInput.new({

image = "editBox.png",-- 输入控件的背景

x = 200,

y = 300,

size = cc.size(200,40)

})

self:addChild(editBox)

4.2 获取文本

可以使用getText()方法获取输入控件的文本内容。

1

local text = editBox:getText()

4.3 设置提示信息

你可以设置输入字段预期值的提示信息,该提示会在输入字段为空时显示,并会在字段获得焦点时消失。

假如输入框期望输入的是密码:

1

editBox:setPlaceHolder("请输入密码")

4.4 设置显示文本

你也可以给输入控件设置默认值。比如你想让玩家给游戏角色起名称,在输入框框中可以预留一个默认名字,用户可以偷懒不输入新名字,直接点击确认开始游戏。

1

editBox:setText("路人甲")

4.5 监听输入事件

在新建输入控件的时候,我们可以通过参数传递一个输入事件监听器给该控件,监听系统输入法在整个输入过程中的状态变化情况。

示例代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

-- 输入事件监听方法

local function onEdit(event,editBox)

if event == "began" then

-- 开始输入

print("开始输入")

elseif event == "changed" then

-- 输入框内容发生变化

print("输入框内容发生变化")

local text = editBox:getText()

print(text)

elseif event == "ended" then

-- 输入结束

print("输入结束")

elseif event == "return" then

-- 从输入框返回

print("从输入框返回")

end

end

local editBox = cc.ui.UIInput.new({

image = "editBox.png",-- 输入控件的背景

listener = onEdit,-- 绑定输入监听事件处理方法

x = 200,40)

})

editBox:addTo(self)

监听回调函数有两个参数

·event,事件类型。它有4个参数:

·began,开始输入,并不是所有系统都产生这个事件。Player模拟器上,不会有这个事件,只有changed事件 iOS上,点击输入框,会弹出系统输入法界面,began事件产生。

·changed,输入框内容发生变化。通常用来检测输入字符串长度以及合法性。

·ended,输入结束。

·return,从输入框返回。return 事件通常紧跟 ended 事件之后。我们点击手机键盘上的 return 按钮,或点击输入控件之外的地方,都会关闭输入框,触发这两个事件。一般地,我们可以在 return 事件中获取最终的字符串,并作界面切换。

·editBox,生产事件的输入框实例。

4.6 密码输入

在输入密码的时候,通常希望用*来显示输入的文字。我们可以通过setInputFlag(0)方法,来启动密码输入模式。

1

2

editBox:setInputFlag(0)

editBox:setPlaceHolder("请输入密码")

5.提交

是否和随机产生的相同,如果相同则胜利,否则失败。

5.2origingrid

origingrid表中保存了随机产生的数组。

5.3answergrid

玩家输入的数字保存在answergrid保存玩家返回的数字。

6.音效设置

6.1audio

播放音乐、音效

Functions

audio.getMusicVolume()

返回音乐的音量值

audio.setMusicVolume(volume)

设置音乐的音量

audio.getSoundsVolume()

返回音效的音量值

audio.setSoundsVolume(volume)

设置音效的音量

audio.preloadMusic(filename)

预载入一个音乐文件

audio.playMusic(filename,isLoop)

播放音乐

audio.stopMusic(isReleaseData)

停止播放音乐

audio.pauseMusic()

暂停音乐的播放

audio.resumeMusic()

恢复暂停的音乐

audio.rewindMusic()

从头开始重新播放当前音乐

audio.willPlayMusic()

检查是否可以开始播放音乐

audio.isMusicPlaying()

检查当前是否正在播放音乐

audio.playSound(filename,isLoop)

播放音效,并返回音效句柄

audio.pauseSound(handle)

暂停指定的音效

audio.pauseAllSounds()

暂停所有音效

audio.resumeSound(handle)

恢复暂停的音效

audio.resumeAllSounds()

恢复所有的音效

audio.stopSound(handle)

停止指定的音效

audio.stopAllSounds()

停止所有音效

audio.preloadSound(filename)

预载入一个音效文件

audio.unloadSound(filename)

从内存卸载一个音效

6.2设置

根据全局变量设置按钮的开与关否,如下。其中localMusic是创建button的返回指针。

localMusic:setButtonLabelString("true")

Quick-Cocos2d-xv3.x版本中已经移除了菜单Menu,使用自己的封装Button实现菜单的功能。

按钮是一个项目中最基本的东西,因为你不论什么项目都缺少不了按钮。它是Quick中常见的UI控件。

6.3UIButton

按钮Button是基于Node的封装,可以创建带图片的按钮或文本标签的按钮,添加到层Layer上显示。就像普通按钮一样,我们可以很方便的处理按钮事件,按钮的状态。设置背景和显示文字。

注:UIButton不直接使用

7.按钮的种类

Quick中有三种Button控件,分别是UIPushButton(按钮控件)UICheckBoxButton(CheckButton控件)UICheckBoxButtonGroup(CheckButton组控件)。它们是Quick封装的按钮控件,源码文件分别位于Quick目录的/framework/cc/ui/目录下UIPushButton.lua/UICheckBoxButton.lua/UICheckBoxButtonGroup.lua

6.3.1事件

Quick-Cocos2d-x中的按钮控件支持如下的事件:

·CLICKED 点击按钮使用UIButton:onButtonClicked(callback)方法监听按钮的点击事件

·pressed 按下按钮使用UIButton:onButtonpressed(callback)方法监听按钮的按下事件

·RELEASE 释放按钮使用UIButton:onButtonRelease(callback)方法监听按钮的释放事件

·STATE_CHANGED 状态改变(enable <---> disable) 使用UIButton:onButtonStateChanged(callback)方法监听按钮的状态改变事件

Quick中的各种按钮控件都支持上面的事件。我们可以通过响应的方法监听并处理相应的事件。

7.烧入真机注意事项

7.1去掉print函数

蛤蟆这里反正不去掉就是黑屏一直。

7.2真机竖屏问题

复制config.json 文件到 ECLIPSE项目中,修改其中的横宽比例即可。

7.3分行语句注意

太长语句进行分行的,要合拼成一行。

7.4无法加载文件

修改文件路径

直接修改文件路径

configFile =device.writablePath.."hxgame.config"

为如下:

configFile = "hxgame.config"

7.5读写文件

8.4中可解决问题,但是写入时候无法写入,通过初始化后重新定义全局变量configFile=”test.config”,可实现写入。

quick-cocos2d-x实例之挑战记忆极限设计文档的更多相关文章

  1. HTML5 input新增type属性color颜色拾取器的实例代码

    type 属性规定 input 元素的类型。本文较详细的给大家介绍了HTML5 input新增type属性color颜色拾取器的实例代码,感兴趣的朋友跟随脚本之家小编一起看看吧

  2. 详解通过focusout事件解决IOS键盘收起时界面不归位的问题

    这篇文章主要介绍了详解通过focusout事件解决IOS键盘收起时界面不归位的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  3. amazeui模态框弹出后立马消失并刷新页面

    这篇文章主要介绍了amazeui模态框弹出后立马消失并刷新页面,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  4. 移动HTML5前端框架—MUI的使用

    这篇文章主要介绍了移动HTML5前端框架—MUI的使用的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  5. HTML5去掉输入框type为number时的上下箭头的实现方法

    这篇文章主要介绍了HTML5去掉输入框type为number时的上下箭头的实现方法,需要的朋友可以参考下

  6. HTML5中input输入框默认提示文字向左向右移动的示例代码

    这篇文章主要介绍了HTML5中input输入框默认提示文字向左向右移动,本文通过实例代码给大家介绍的非常详细对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  7. 详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)

    本篇文章主要介绍了移动端HTML5页面端去掉input输入框的白色背景和边框,非常具有实用价值,需要的朋友可以参考下。

  8. AmazeUI 模态窗口的实现代码

    这篇文章主要介绍了AmazeUI 模态窗口的实现代码,代码简单易懂,非常不错,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  9. ios – 如何通过编程方式为UIButtons组设置单个背景图像

    解决方法要使用选择器数组以编程方式创建按钮,您可以使用以下代码片段://定义策略

  10. ios – UIButton背景图像以编程方式更改

    如何在点击事件中更改我的UIButton的背景图像?并使用上一张图片在几秒钟内刷新它?我的意思是在点击后更改它的背景图像并在点击后重置它.解决方法将您的clickEvent图像作为按钮的突出显示图像.

随机推荐

  1. 【cocos2d-x 3.x 学习笔记】对象内存管理

    Cocos2d-x的内存管理cocos2d-x中使用的是上面的引用计数来管理内存,但是又增加了一些自己的特色。cocos2d-x中通过Ref类来实现引用计数,所有需要实现内存自动回收的类都应该继承自Ref类。下面是Ref类的定义:在cocos2d-x中创建对象通常有两种方式:这两中方式的差异可以参见我另一篇博文“对象创建方式讨论”。在cocos2d-x中提倡使用第二种方式,为了避免误用第一种方式,一般将构造函数设为protected或private。参考资料:[1]cocos2d-x高级开发教程2.3节[

  2. 利用cocos2dx 3.2开发消灭星星六如何在cocos2dx中显示中文

    由于编码的不同,在cocos2dx中的Label控件中如果放入中文字,往往会出现乱码。为了方便使用,我把这个从文档中获取中文字的方法放在一个头文件里面Chinese.h这里的tex_vec是cocos2dx提供的一个保存文档内容的一个容器。这里给出ChineseWords,xml的格式再看看ChineseWord的实现Chinese.cpp就这样,以后在需要用到中文字的地方,就先include这个头文件然后调用ChineseWord函数,获取一串中文字符串。

  3. 利用cocos2dx 3.2开发消灭星星七关于星星的算法

    在前面,我们已经在GameLayer中利用随机数初始化了一个StarMatrix,如果还不知道怎么创建星星矩阵请回去看看而且我们也讲了整个游戏的触摸事件的派发了。

  4. cocos2dx3.x 新手打包APK注意事项!

    这个在编译的时候就可以发现了比较好弄这只是我遇到的,其他的以后遇到再补充吧。。。以前被这两个问题坑了好久

  5. 利用cocos2dx 3.2开发消灭星星八游戏的结束判断与数据控制

    如果你看完之前的,那么你基本已经拥有一个消灭星星游戏的雏形。开始把剩下的两两互不相连的星星消去。那么如何判断是GameOver还是进入下一关呢。。其实游戏数据贯穿整个游戏,包括星星消除的时候要加到获得分数上,消去剩下两两不相连的星星的时候的加分政策等,因此如果前面没有做这一块的,最好回去搞一搞。

  6. 利用cocos2dx 3.2开发消灭星星九为游戏添加一些特效

    needClear是一个flag,当游戏判断不能再继续后,这个flag变为true,开始消除剩下的星星clearSumTime是一个累加器ONE_CLEAR_TIME就是每颗星星消除的时间2.连击加分信息一般消除一次星星都会有连击信息和加多少分的信息。其实这些combo标签就是一张图片,也是通过控制其属性或者runAction来实现。源码ComboEffect.hComboEffect.cpp4.消除星星粒子效果消除星星时,为了实现星星爆裂散落的效果,使用了cocos2d提供的粒子特效引擎对于粒子特效不了

  7. 02 Cocos2D-x引擎win7环境搭建及创建项目

    官网有搭建的文章,直接转载记录。环境搭建:本文介绍如何搭建Cocos2d-x3.2版本的开发环境。项目创建:一、通过命令创建项目前面搭建好环境后,怎样创建自己的Cocos2d-x项目呢?先来看看Cocos2d-x3.2的目录吧这就是Cocos2d-x3.2的目录。输入cocosnew项目名–p包名–lcpp–d路径回车就创建成功了例如:成功后,找到这个项目打开proj.win32目录下的Hello.slnF5成功了。

  8. 利用cocos2dx 3.2开发消灭星星十为游戏添加音效项目源码分享

    一个游戏,声音也是非常的重要,其实cocos2dx里面的简单音效引擎的使用是非常简单的。我这里只不过是用一个类对所有的音效进行管理罢了。Audio.hAudio.cpp好了,本系列教程到此结束,第一次写教程如有不对请见谅或指教,谢谢大家。最后附上整个项目的源代码点击打开链接

  9. 03 Helloworld

    程序都有一个入口点,在C++就是main函数了,打开main.cpp,代码如下:123456789101112131415161718#include"main.h"#include"AppDelegate.h"#include"cocos2d.h"USING_NS_CC;intAPIENTRY_tWinMain{UNREFERENCED_ParaMETER;UNREFERENCED_ParaMETER;//createtheapplicationinstanceAppDelegateapp;return

  10. MenuItemImage*图标菜单创建注意事项

    学习cocos2dx,看的是cocos2d-x3.x手游开发实例详解,这本书错误一大把,本着探索求知勇于发现错误改正错误的精神,我跟着书上的例子一起调试,当学习到场景切换这个小节的时候,出了个错误,卡了我好几个小时。

返回
顶部