quick-quick cocos2dx-x想制作一个退出游戏的按钮,怎么实现

cocos2d-x 游戏暂停界面,监听home键,返回键,Menu键 解决方案
游戏暂停界面:
cocos2d-x中游戏暂停界面提供的思路是用pushScene()和popScne(),即推进和弹出场景,当游戏暂停时,推进(pushScene())暂停场景,之前运行的场景将会自动暂停,然后我们可以在暂停场景中操作,如Resume,ReStart,Quit等,当我们不再需要暂停场景时,可以popScene()将暂停场景弹出。(场景就像一张纸,我们推进一个场景,相当于在这张纸上再盖上一张,弹出场景相当于将最表面的那张纸拿掉)。
推进暂停场景的相关代码如下:
CCRenderTexture *renderTexture = CCRenderTexture::create(800,600); &
& & renderTexture-&begin(); &
& & this-&getParent()-&visit(); &
& & renderTexture-&end(); &//这里实际是通过CCRenderTexture保存当前界面(相当于截屏),然后传递给暂停界面,当成背景精灵 &
& & CCDirector::sharedDirector()-&pushScene(PauseLayer::scene(renderTexture,true)); &
暂停场景PauseLayer的相关代码如下:
CCScene* PauseLayer::scene(CCRenderTexture* sqr,bool isFlip){ &
& & CCScene *m_scene = CCScene::create(); &
& & CCSprite *_spr = CCSprite::createWithTexture(sqr-&getSprite()-&getTexture()); &
& & _spr-&setPosition(ccp(400, 300)); &
& & _spr-&setFlipY(isFlip); &
& & _spr-&setColor(ccGRAY); &
& & m_scene-&addChild(_spr); &
& & // 'layer' is an autorelease object &
& & PauseLayer* layerr = PauseLayer::create(); &
& & // add layer as a child to scene &
& & m_scene-&addChild(layerr); &
& & // return the scene &
& & return m_ &
监听返回键和Menu键:
1.继承CCKeypadDelegate
2.实现两个虚函数
virtual void
keyBackClicked ()
virtual void
keyMenuClicked ()
如查要实现监听的对象是CCLayer或者继承CCLayer的,则只需做第二步及在初始化中setKeypadEnabled(true);
因为CCLayer本身继承了CCKeypadDelegate,如下图所示
class CC_DLL CCLayer : public CCNode, public CCTouchDelegate, public CCAccelerometerDelegate, public CCKeypadDelegate &
监听home键:
在cocos2d-x中我现在还没找到明确的监听home键的方案,但可以用替代方案。
不知你们有没有发现在AppDelegate.cpp里的两个方法:
// This function will be called when the app is inactive. When comes a phone call,it's be invoked too &
void AppDelegate::applicationDidEnterBackground() { &
& & CCDirector::sharedDirector()-&stopAnimation(); &
& & // if you use SimpleAudioEngine, it must be pause &
& & // SimpleAudioEngine::sharedEngine()-&pauseBackgroundMusic(); &
// this function will be called when the app is active again &
void AppDelegate::applicationWillEnterForeground() { &
& & CCDirector::sharedDirector()-&startAnimation(); &
& & // if you use SimpleAudioEngine, it must resume here &
& & // SimpleAudioEngine::sharedEngine()-&resumeBackgroundMusic(); &
注意这两个方法的英文解释,实际上这两个方法就是判断程序是否被切换或者说是否被扔至后台工作。因为在手机上按home键,实际就是切换将程序推至后台。So,我们就能在这两个方法做文章了。
相关代码如下:
void AppDelegate::applicationDidEnterBackground() &
& & CCDirector::sharedDirector()-&stopAnimation(); &
& & SimpleAudioEngine::sharedEngine()-&pauseBackgroundMusic(); &
& & Global* sh = Global::toIns(); &
& & CCRenderTexture* renderT &
& & switch(sh-&targetScene){ &
& & case TargetSceneFirstScene: &
& & case TargetSceneSecondScene: &
& & & & renderTexture = CCRenderTexture::create(800,600); &
& & & & renderTexture-&begin(); &
& & & & sh-&battleLayer-&visit(); &
& & & & renderTexture-&end(); &
& & & & CCDirector::sharedDirector()-&pushScene(PauseLayer::scene(renderTexture,false)); &
& & case TargetSceneInvalid: &
& & default: &
// this function will be called when the app is active again &
void AppDelegate::applicationWillEnterForeground() &
& & CCDirector::sharedDirector()-&startAnimation(); &
& & SimpleAudioEngine::sharedEngine()-&resumeBackgroundMusic(); &
在上面的代码中,我做的是,当程序InActive(推至后台)时,推进暂停界面
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'我们已经了解了Quick的一些基础知识,所以本章我们将开始深入到Quick内部,了解它内部的代码结构,同时在解析的过程中学到相应的原理,并学会如何修改、添加相应的代码文件,比如实现屏幕的分辨率适配。
前面我们创建了一个叫做parkour的游戏项目,其意思就是本人本来打算要做一个跑酷游戏的,但是因为这几天玩了一款叫做《el》的飞行游戏,非常有意境,并且几乎零差评,所以请允许我任性一下,善变的我不想做跑酷游戏了,而是想要挑战下这种类型的游戏。
《el》其实蛮类似跑酷游戏的,同时,它也很像前段时间超火的《Flappy bird》,喜欢这类游戏风格的童鞋不妨可以下载下来玩玩(我木有打广告,不是软文,不是)。
解析代码文件
正如上面所说的一样,本教程改做飞行游戏了。于是乎,我重新创建了一个叫做el的游戏项目。然后打开Sublime编辑器,把整个游戏项目都拖到该编辑器中,这样既方便代码编辑,又方便相关属性的查找。
下面我们就来打开新项目的src文件夹,一个一个的解析里面的lua文件吧。
1、config.lua
首先,打开config.lua文件,config文件中保存了游戏项目一些重要的属性配置,包括调试信息状态、屏幕大小、屏幕适配的方式等等。
下面是它现有属性的具体含义:
DEBUG: 配置Quick工程的调试信息状态,0表示关闭,1表示打印少量调试信息,2表示打印标准调试信息。
DEBUG_FPS: 是否显示模拟器左下角的FPS信息
DEBUG_MEM: 是否要每10秒打印一次内存信息
LOAD_DEPRECATED_API: 是否加载已经废弃了的API
LOAD_SHORTCODES_API: 是否加载短代码
CONFIG_SCREEN_ORIENTATION: 游戏中的屏幕方向,landscape横屏,portrait竖屏。
CONFIG_SCREEN_WIDTH: 屏幕宽度,但屏幕方向为&landscape&横屏时,该属性表示屏幕的高度
CONFIG_SCREEN_HEIGHT: 屏幕高度,但屏幕方向为&landscape&横屏时,该属性表示屏幕的宽度
CONFIG_SCREEN_AUTOSCALE: 屏幕适配策略,如FIXED_WIDTH、FIXED_HEIGHT和FILL_ALL
这些属性都是创建项目时默认配置好的,当然我们可以根据项目需要对这些值进行修改,比如进行分辨率适配时。此外,在config文件中我们也可以加入自定义的一些属性,比如声音、字体、图片、网络配置等等常量和宏的定义。
既然都提起了分辨率适配,那么接下来我们就来看看如何进行分辨率适配吧。
分辨率适配原理
众所周知,现今市场中各种屏幕尺寸和分辨率的移动设备(特别是Android机)层出不穷,所以为了让我们开发的程序项目能够更好地适应这些设备的不同需求,它的分辨率适配就显的尤其的重要。
如果读者之前对Cocos2d-x的分辨率适配原理有一点的了解,那么我想这部分内容理解起来应该是很容易的,但考虑了下初学者,所以下面我们还是简单的说说原理吧。
Cocos2d-x以及Quick中图片显示到屏幕有下面两个逻辑过程,两个过程结合在一起,影响了最终的显示效果。
资源布局到设计分辨率;
设计分辨率布局到屏幕。
其中设计分辨率是指我们在config文件中设置的CONFIG_SCREEN_WIDTH 和 CONFIG_SCREEN_HEIGHT,它相当于一个参考分辨率。只有确定了我们的参考分辨率,才能得到我们的图片资源的缩放比例。
在第一个过程中,我们需要通过以下函数来完成相应的转换:
cc.Director:getInstance():setContentScaleFactor(value)
setContentScaleFactor方法决定了图片资源显示到屏幕的缩放因子,顾名思义就是决定了整个游戏内容放大或者缩小的比例系数。
它的参数由(背景图片资源宽高/设计分辨率宽高)得到,而不是通过(背景图片资源宽高/屏幕宽高)得来。这样也就避开了游戏开发者去直接关注移动设备的实际屏幕。
setContentScaleFactor通常会用两个方式来设置参数,不同的设置方法会有不同的缩放负作用。
用(资源高/设计分辨率高)的高度比作为参数,也就是内容的缩放因子,这样保证了背景资源的垂直方向在设计分辨率范围内的全部显示,但在水平方向上可能会溢出屏蔽或留有黑边。
用(资源宽/设计分辨率宽)的宽度比作为内容缩放因子,保证了背景资源的水平方向在设计分辨率范围内的全部显示,但在垂直方向上可能会超出屏蔽范围或留有黑边。
第二个过程中,我们需要通过以下函数接口完成转换:
setDesignResolutionSize(width, height, cc.ResolutionPolicy)
setDesignResolutionSize方法会在display.lua中被调用,所以这里我们不用管它,只需要注意它的参数设置就好。
其中参数 width 和 height 指的是设计分辨率的宽、高,cc.ResolutionPolicy
是分辨率适配策略,它们分别由config.lua文件中的 CONFIG_SCREEN_WIDTH、CONFIG_SCREEN_HEIGHT 和
CONFIG_SCREEN_AUTOSCALE来设置。
Quick中CONFIG_SCREEN_AUTOSCALE的值有三种情况:
FIXED_WIDTH:保持传入的设计分辨率宽度不变,根据屏幕分辨率修正设计分辨率的高度。
FIXED_HEIGHT:保持传入的设计分辨率高度不变,根据屏幕分辨率修正设计分辨率的宽度。
FILL_ALL:保证了设计区域总有一个方向铺满屏幕,另一个方向可能超出屏幕或留有黑边。
以上两个过程相辅相成,它们相互影响,所以做好分辨率适配必须确保两步坚固。
说到这里我不得不提的是,在做分辨率适配的时候,常有人忽略以上的第一个过程,因此作为小白的我还是会经常遇到那么一些人问:为什么我的分辨率适配护好了还是有黑边,还是有问题?
对此我要说:请设置内容缩放因子。
下面我们以本教程游戏作为例子,看看具体的实现方法。
分辨率适配的实现
本教程将做一个横屏的飞行游戏,我们需要做到让背景图在高度方向上全部显示,所以显然地,如果高度方向上全部显示,那么在宽度方向上必然会做出一些牺牲(要么被裁减,要么留黑边(留黑边的问题可以通过将图片宽度做得更宽一点来解决))。
要实现这上述目标,需要保证各过程都是在宽度方向上裁减。所以我们给出了以下的实现过程:
1、首先我们选择 1136 x 640 的图片资源,这样宽高比够大,能确保在某些极端的分辨率下也能完整不留黑边的显示整个游戏画面。
2、接着打开src/config.lua,设置配置信息,如下:
CONFIG_SCREEN_ORIENTATION = "landscape"
CONFIG_SCREEN_WIDTH& = 480
CONFIG_SCREEN_HEIGHT = 320
CONFIG_SCREEN_AUTOSCALE = "FIXED_HEIGHT"
CONFIG_SCREEN_ORIENTATION这个配置告诉 Quick 引擎,游戏是横屏的。该参数是拿来适配的时候使用的。
注意:如果使用 Cocos Code IDE 调试程序,那么请确保config.json配置文件的isLandscape 字段值为true,两者保持一致。反正,若游戏是竖屏,那么请确保isLandscape值为false。
对于 CONFIG_SCREEN_WIDTH 和 CONFIG_SCREEN_HEIGHT 的配置,其实我觉得只要配置好 CONFIG_SCREEN_AUTOSCALE 和内容缩放因子,那就不会有什么问题。
因为是横屏游戏,所以我们选择了 FIXED_HEIGHT 作为适配模式&&让 Y 轴方向能完全显示在屏幕上。
3、最后,打开src/app/MyApp.lua,修改run()方法,加入内容缩放因子。
function MyApp:run()
&&&&cc.FileUtils:getInstance():addSearchPath("res/")
&&&&cc.Director:getInstance():setContentScaleFactor(640 / CONFIG_SCREEN_HEIGHT)
&&&&self:enterScene("MainScene")
因为我们选择了FIXED_HEIGHT。故此,计算内容缩放因子时,其参数为:资源高度 / 屏幕分辨率高度。关于MyApp:run()方法,我们后面将做详细的讲解。
好了,本章我们就到这里吧!也不知道是不是我太啰嗦,写了这么多居然才讲了一个.lua文件,看来下章开始不能再啰嗦了。另外,以上分辨率适配的验证将在后面添加资源图片的时候得到验证。
阅读(...) 评论()quick-cocos2d-x android返回键监听并实现原生退出对话框
这两天终于闲了一下,就顺手又把quick捡起来又学了学,一直都觉得quick比cocos2dx那套lua绑定要方便许多,今天试了下android返回键的监听,还是挺好弄的,所以就有了这篇。
首先说明一下使用的quick版本――2.2.5。
直接上代码
function MainScene:addBackEvent()
if device.platform == "android" then
self.touchLayer = display.newLayer()
self.touchLayer:addNodeEventListener(cc.KEYPAD_EVENT, function(event)
if event.key == "back" then
--CCDirector:sharedDirector():endToLua()
local javaClassName = "com/cocos2dx/testgame/Testgame"
local javaMethodName = "exit"
luaj.callStaticMethod(javaClassName, javaMethodName)
self.touchLayer:setKeypadEnabled(true)
self:addChild(self.touchLayer)
end比较好理解,创建一个层,为该层添加一个事件监听,这个事件监听的类型是keypad,如果key的值是back那么就执行里面的代码了,如果不需要显示android原生的对话框,只要关闭程序,只需要执行上面代码中注释的部分就可以了。
2.2.3之后的版本在添加事件监听上与之前有所不同,这里需要注意下。
当然做软件嘛,好歹有个温馨提示,防止用户无意点到退出游戏就不友好了,所以这里调用了一下android原生对话框来显示。quick提供了一个luajavabridge这个sample,可以很轻松调用到android中的静态函数。
这里还是贴一下android中调用的函数代码
public static void exit() {
instance.runOnUiThread(new Runnable() {
public void run() {
Builder builder = new Builder(instance);
builder.setTitle("提示");
builder.setMessage("确定退出吗");
builder.setIcon(android.R.drawable.ic_dialog_info);
builder.setPositiveButton("确定", new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
System.exit(0);
builder.setNegativeButton("取消", new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}).show();
}这样就大功告成!
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'基于Lua源码加密打包基础上的更新策略
Quick-cocos2d-x增加了编译及加密源代码的功能(具体可参考)。以此功能为基础,我实现了一个版本更新模块,解决了自己项目中的版本更新需求。现抛砖引玉,与大家分享。
从基本原理和方案讲起比较枯燥,直接从介绍具体用法开始吧。
要能够在线更新文件,一个服务器是必须的。我目前实现的是用HTTP协议取文件,只需要有一个基本的web服务器,能通过类似http://&server&/&filename&的链接取到文件即可。当然,如果需要根据平台和版本进行文件的分发,服务器端还需要进行相应配置。
要调试下面的例子,自己在内网甚至就在本机上搭建一个最简单的web服务器就可以了。
一、基本更新功能
1.创建一个可以自动更新的程序
首先准备好我们的quick-x工程。作为例子,我们直接使用create_project来创建一个新工程helloworld来使用。这一步不用我多说。
接下来,请到下载我写的更新模块。只需要根目录下的update.lua文件即可,其他的目录下只是我的一些例子和工具。&
(加注:quick-x的2.2.3版本里的sample/2048使用了这一更新模块,可以使用例子中的update.lua文件)
将update.lua文件加到helloworld工程的scripts目录下。修改文件中“local server = "http://192.168.1.98:8088/"”这一句,改成自己的服务器地址。
在scripts目录下创建一个新文件appentry.lua,然后打开工程原来的main.lua文件,把里面调用程序入口的代码复制过来。如果你使用的是最新版的quick-x,那么就只有“require("app.MyApp").new():run()”这一句。保存appentry.lua文件。
现在修改main.lua文件,去掉原来的程序入口代码,改成“require "update"”。
这样,更新模块就添加好了。程序在启动时,将先运行更新模块,完成后,自动调用appentry进入原来程序的真正入口。
现在可以先运行看看了,相信大家都会选择最方便的player来调试的。实际上真机也是没问题的。
运行后,界面上首先会显示“Loading...”,然后再进入熟悉的“Hello,world”界面。
接下来我们调试与服务器的连接是否正常。在服务器上创建一个flist文件,内容为:
local&list&=&{&
&&ver&=&"1.0.1",&
&&stage&=&{&
&&remove&=&{&
return&list
需要保证用http://&server&/flist这样的网址能取到flist。如果是最基本的web服务器,把flist文件放在web服务目录的根下面就可以。如果希望用http://&server&/getfile?filename=flist这样的形式取文件,请自己修改update.lua里的相关代码。
现在重新运行程序,运行结果看起来没有什么不同。不过,如果是在player上调试,应该能在helloworld工程目录下找到flist文件,和服务器上的文件内容是一样的,说明我们从服务器取到了文件,连接是正常的。如果是真机,请在device.writablePath指向的目录下找flist文件。
现在,我们已经有一个可以自动更新版本的程序了。为了模拟真实的应用环境,我们将把源码加密打包再进行后面的调试。如果还不知道应该怎么打包,请再认真参考前面的文章。另外,推荐使用QuickXDev插件进行打包(可参考)。
为了后面更好的演示图片资源的更新,打包前可以修改一下MainScene.lua,在界面上添加一张图片,如下:
display.addSpriteFramesWithFile(GAME_TEXTURE_DATA_FILENAME,&GAME_TEXTURE_IMAGE_FILENAME)&
self.bg&=&display.newSprite("#logo.png",&display.cx-200,&display.cy-200)&
self:addChild(self.bg)
将资源放到res目录下,在config.lua里配置好GAME_TEXTURE_DATA_FILENAME和GAME_TEXTURE_IMAGE_FILENAME的值。运行能正常显示图片后,就可以真正打包源码了。
假如你是完全按照参考文章去打包的,那你应该会将打包后的文件game.zip放在res目录下,并将scripts目录下所有原来的源码全部移走,启动程序,运行结果和没打包之前一致。
2.简单的功能更新
现在,我们希望将显示的文字改成中文。代码的修改是很简单的,将MainScene.lua中显示的字串“Hello, World”改成“你好,世界”就可以了。
但我们怎么让程序自动进行更新呢?当然是打包新代码然后放到服务器上让程序来取了。
因为我们只修改了MainScene.lua,所以我们只需要打包这个文件就可以了。打包时需要注意的是,MainScene.lua是放在app\scenes目录下的,所以它在打包目录下也应该放在相同的两级目录之下才行。
我们将新打包的文件随便改个文件名(其实在这一情境中,仍然叫game.zip也是没问题的),比如update.bin。将它放到服务器上,当然仍然要保证http://&server&/update.bin这样的网址能取到。
接下来我们修改服务器上的flist文件,如下:
local&list&=&{&
&&ver&=&"1.0.2",&
&&stage&=&{&
&&&&{name="update.bin",&code="8c528975dec8b6daa41be0",&act="load"},&
&&remove&=&{&
return&list
可以看出,list文件的版本号变成了1.0.2,这样客户端程序就知道有了更新,准备取新的文件。
stage里指出这个版本里有多少需要下载到客户端的文件。 name是文件名。code是文件的MD5码,用于验证文件。如果不想验证文件,code可以等于nil或者干脆不写这一键值。但不进行文件验证显然是不利的,除了不能保证下载文件的正确性而引起程序崩溃,还有就是不能进行同名文件的更新,如果原来已经下载过update.bin,不进行验证的话默认原来的文件是正确的,客户端程序将不会重新下载update.bin。 文件的md5码取得是很容易的,有很多方法。我实现更新模块时顺便写了个取md5的小程序,放在更新模块工程的tools目录下,使用方法很简单,将要取md5的文件放在getMd5/files目录下,用player打开getMd5工程运行,工程目录下生成的flist.txt里就是需要的内容了。 act="load"表明这一文件是代码文件,需要载入运行,如果是普通的图片资源,可以等于nil或者直接不写这一键值。
现在,可以运行客户端程序了。“Loading...”界面过后,显示的是“你好,世界”,自动更新成功了!
接下来我们将讨论一下更新的基本原理,以确认我们的更新方式是真正可行的,同时进一步演示如何进行更深层次的功能更新(如资源路径变化的处理、framework包修改、update模块自身更新等)。当然,更新机制的健壮性(不能因为更新失败,或者更新文件被破坏造成程序无法工作),还有如何根据平台和机型进行版本文件的分发等,也是我们要讨论的。
谢谢夸奖,希望能对大家有所帮助。本系列已经写完,请多提意见!
只打包MainScene.lua就可以了,只不过打包时目录路径要和原来的一样
只打包MainScene.lua就可以了,只不过打包时目录路径要和原来的一样compile_scripts.sh -i app/scenes/ -o res/game.zip -e xxtea_zip -ek aaa是这样吗?
只打包MainScene.lua就可以了,只不过打包时目录路径要和原来的一样compile_scripts.sh -i app/scenes/ -o res/game.zip -e xxtea_zip -ek aaa是这样吗?不是这样的。假设你打包的目录叫code_dir,那你要在code_dir目录下建立app/scenes,把MainScene.lua放进去,然后打包命令是:compile_scripts.sh -i code_dir -o res/game.zip -e xxtea_zip -ek aaa
没有lfs.lua的。这是Quick-x已经集成好的LuaFileSystem。
有点看不懂你的问题呢...是问下载后的更新文件是放在哪个目录下吗?不是放在res目录下,是放在单独的下载目录下的。
UpdateScene:ctor()函数第一条语句就是定义这个目录的。你最好还是看一下代码,不复杂,根据自己的项目肯定会有所修改的吧
服务器上flist里面列出的文件都会被下载到手机上。下载后的文件放在device.writablePath目录下,Android平台可以改成放到SD卡上。
只打包MainScene.lua就可以了,只不过打包时目录路径要和原来的一样如果没有完整的版本tag,这步还挺难的,不好获取改动文件的列表
只打包MainScene.lua就可以了,只不过打包时目录路径要和原来的一样如果没有完整的版本tag,这步还挺难的,不好获取改动文件的列表按目前的策略,通常情况下,只需要将最新版本和最初的版本作一个比对就可以了。如果需要进行完整的版本管理,写一个小工具也是可以的。以下就是一个朋友开发的小工具,当然还有很多需要完善的地方,但按这个思路走已经很实用了:/code0418/p/3510658.html
你使用的应该是较早版本的Quick吧,早期版本里面这个接口是getResponseDataLua,你修改一下就可以了。不过,早期版本的Quick应该还不支持源码的加密打包功能,你可能需要自己对比新版本的代码进行添加。
你使用的应该是较早版本的Quick吧,早期版本里面这个接口是getResponseDataLua,你修改一下就可以了。不过,早期版本的Quick应该还不支持源码的加密打包功能,你可能需要自己对比新版本的代码进行添加。 [LUA ERROR] ...te-Modoule-of-Quick-x/tools/getMd5/scripts/app/MyApp.lua:5: module &framework.cc.init& not found:&&no field package.preload[&framework.cc.init&]那这个加密的呢
你使用的应该是较早版本的Quick吧,早期版本里面这个接口是getResponseDataLua,你修改一下就可以了。不过,早期版本的Quick应该还不支持源码的加密打包功能,你可能需要自己对比新版本的代码进行添加。 [LUA ERROR] ...te-Modoule-of-Quick-x/tools/getMd5/scripts/app/MyApp.lua:5: module &framework.cc.init& not found:&&no field package.preload[&framework.cc.init&]那这个加密的呢仍然是你quick版本的问题,估计你用的是0827版本吧。你只有自己重新创建一个工程,然后把MainScene.lua和mkflist.lua复制过去来使用了。如果你对平台本身不是太熟悉,建议你使用最新的develop版本。
& 开源中国(OSChina.NET) |
开源中国社区(OSChina.net)是工信部
指定的官方社区

我要回帖

更多关于 quick cocos2dx 下载 的文章

 

随机推荐