有在用quick-quick cocos2dx 加密开发手游的么

安装Sublime配合quick-cocos2d-x开发
时间: 12:46:40
&&&& 阅读:6517
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&
安装 Package Control
在Sublime中,按Ctrl+~打开控制台,输入:
import urllib2, pf=‘Package Control.sublime-package‘; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else N urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),‘wb‘).write(urllib2.urlopen(‘http://sublime.wbond.net/‘+pf.replace(‘ ‘,‘%20‘)).read()); print ‘Please restart Sublime Text to finish installation‘
回车确定,等提示重启Sublime的时候重启Sublime。
用PackageControl 安装 QuickXDev
QuickXDev是Sublime IDE下的一个关于Qucik-cocos2d-x的插件,主要有一下功能:
quick-cocos2d-x api代码提示。
跳转到定义处。
Create New Project(创建quick-2dx项目按钮)
Run With Player(运行quick-2dx Player.exe按钮)
Compile Scripts。
用户自定义变量、函数自动完成提示及转到定义。
lua5.1 api代码提示。
一些代码片段,如if-else,if-elseif-else,while,comment,repeat-until….
新建lua文件,可自定义里面的内容。
lua构建系统。
在Sublime按Ctrl+Shift+P,输入install package,回车确定,等待加载。
输入QuickXDev,回车确定,等在安装完成,重启Sublime。
等待状态查看左下角状态栏。
设置QuickXDev
打开Preferences - Package Setting - QuickXDev - Settings-Default,这时sublime会打开一个文本,拷贝内容。
打开Preferences - Package Setting - QuickXDev - Settings-User,黏贴内容并根据情况修改内容。如我的:
// must set the path
"quick_cocos2dx_root": "C:\\cocos\\quick-3.3",
"cocos2dx_root": "",
// lua template attributes
"date_format": "%Y-%m-%d %H:%M:%S",
// i.e. peter or peter (peter@gmail.com)
"author": "@qq.com",
// compile_scripts encrypt key,no encrypt when empty
"compile_scripts_key": ""
只要设置了正确的quick路径之后,那么右键一个目录下面,有create new Project 选项,选择之后在下面输入包名,那么QuickXDev插件就会为你创建一个新的quick项目了
只要目录下有main.lua,右键目录,选择run with player,就可以用player运行项目。
提示player no exists,sublime菜单栏 - Preferences - Browse Packages… 来到插件包的目录,进入QuickXDev目录,修改quickx.py文件,在quickx.py文件里面查找player no exists字段,player no exists所在的代码的上上一句是判断player3.exe的目录,我们修改为正确的目录。我的是由“playerPath=quick_cocos2dx_root+”/player3.exe””修改成“playerPath=quick_cocos2dx_root+”/quick/player/win32/player3.exe”“
打开src目录下的任何一个lua文件,右键输入代码的区域,也有“run with player”选项。
标签:&&&&&&&&&
&&国之画&&&& &&&&chrome插件&&
版权所有 京ICP备号-2
迷上了代码!标签:至少1个,最多5个
本渣最近一个月来开始接触quick-cocos2d-x,用lua开发比c++要快些,但也因为quickx目前的一些坑,让本渣折腾了不少时间。在此做点记录,希望能让别人少走些弯路。原文将不时更新:
quickx的uiloader只能解析cocostudio v1.5(windows版)的json
cocostudio的Mac版v1导出的json用uiloader解析有问题,另外cocostuio v2暂无导出json的功能,而uiloader只能解析json格式。
如果大量使用quickx的ui类,还是用cocostudio v1.5为好
如果不想切换UI编辑器,可以直接用cocos2d-x的CSLoader,但要小心与quickx的ui类混用的情况(下文会提及)。
如果不怕折腾,可以研究下cocostudio v1.5的json格式,改quickx的源代码。
quickx独立的触摸响应与cocos2d-x的存在不兼容问题
在同时使用cocos2d-x的Widget类和quickx的ui类时,quickx的ui类没有接受响应事件。在此仅举一个典型例子,在quickx的UIScrollView中加入一个CSLoader解析的Widget,则UIScrollView无法滚动。照理说,Widget的触摸事件的priority是0(graph priority),quickx的LuaEventNode的priority是-1(fixed priority),应该是LuaEventNode先接收touch进行处理才对,但是Widget是单点触摸,而LuaEventNode是多点触摸,再加上cocos2d-x是先处理单点再处理多点的,所以触摸事件反而是先到了Widget了。不幸的是Widget默认是swallow touch的,所以触摸事件不会到LuaEventNode。
彻底杜绝此类混用。但由于之前提到的uiloader的问题,可能无法完全使用quickx的ui类。
[workaround]如果不需要多点触摸,可以把LuaEventNode改成单点触摸。
quickx的UIScrollView/UIListView的bug
老实说,这两个ui类确实不够成熟。
用local node space坐标与world space坐标做比较。引起的问题有:没有惯性滚动,UIListView的item没完全移除viewRect就被remove掉等等。本渣向quickx提了两个PR,前一个过了几周才被处理,代码有conflict,最后还是开发者再提了新的PR去merge了,后一个很快就被merge了。所以目前更新代码就可以了。
UIListView若是所设的item size小于item的cascadeBoundingBox大小,滚动时会有死循环,反复load item和remove item。开发者后来加了个patch,该bug重现少了,但还是存在的。
LuaEventNode崩溃
点击crash,是cocos2d-x C++的内存管理报错。已有人向quickx报过bug,但开发者回复中提到的patch被没有解决问题
在LuaEventNode的构造函数时retain参数node,在析构函数中release。
2 收藏&&|&&0
你可能感兴趣的文章
本作品采用 署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可
分享到微博?
我要该,理由是:
在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?主题 : 使用quick cocos接入ios GameCenter教程分享
级别: 新手上路
UID: 303356
可可豆: 594 CB
威望: 441 点
在线时间: 162(时)
发自: Web Page
来源于&&分类
使用quick cocos接入ios GameCenter教程分享&&&
关于使用quick cocos 接入GameCenter我写了篇技术博客,这两天一直在搞这个,就顺带写篇文章分享下,欢迎指正下面是博客原文:注:本人使用的是quick3.3版本,里面用到的一些类的路径可能会有不同,可以根据不同环境自行搜索使用的类所在位置,甚至调用的函数api也可能不同,但是只要明白作用,原理应该都是一样的,只是写法上可能略有区别首先转载一篇GameCenter的使用指南,里面更多是如何对ios应用启用GameCenter的一些设置方法,主要是需要使用苹果开发者账户进行的一些设置转载的文章中的4开始往后的代码都是和GameCenter相关的一些具体实现代码,可以将这些方法直接放在quick cocos 的ios工程下的RootViewController.mm里作为RootViewController的对象方法。之前尝试改为类方法貌似会有问题,也可能是由于我还不大懂ios开发,如果有解决方式欢迎指教。其中的authenticateLocalPlayer方法 为上面文章中启动GameCenter的登录模块。由于这些方法已经copy到RootViewController中作为RootViewController的对象方法,可以在quick cocos的ios工程下的AppController.mm中,在RootViewController初始化之后调用。如下:
&&&&viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];
&&&&viewController.wantsFullScreenLayout = YES;
&&&&viewController.view = eaglV
&&&&// Set RootViewController to window
&&&&if ( [[UIDevice currentDevice].systemVersion floatValue] & 6.0)
&&&&&&&&// warning: addSubView doesn't work on iOS6
&&&&&&&&[window addSubview: viewController.view];
&&&&&&&&// use this method on ios6
&&&&&&&&[window setRootViewController:viewController];
&&&&[window makeKeyAndVisible];
&&&&//启动GameCenter登录
&&&&[viewController authenticateLocalUser];
这样在游戏起动时就可以启动登录GameCenter了。然后再在authenticateLocalPlayer 方法里可以处理登录成功的回调处理,登录成功后,可以从GKLocalPlayer里拿到GameCenter的一些参数,比如playerId,friend等,此时你可以选择将这些信息先存起来。&&&&接着可以启动 cocos 的app正式进入游戏.那么进入游戏后我们如何取到这些信息呢?这就需要使用quick 提供的lua调用OC的接口了位置在quick/framework/luaoc.lua里。用到的函数就是luaoc.callStaticMethod,注意这个函数只能调用OC的类方法(也就是前面是+号的方法),具体需要传入的参数在lua文件的注视里已经写的很详细了,这里不再叙述了。注意其中一个args参数,里面是传给OC的参数字典。可以将回调函数的handle传入 用于执行lua调用OC后的回调。另外注意一点,在OC这边和lua交互用到的一些方法需要先导入下面几个头文件
#import &cocos2d.h&
#include &CCLuaEngine.h&
#include &CCLuaBridge.h&
例如我要调用的是OC下面的一个叫login的函数,其中dict参数就是从lua那里传过来的args
+ (void)login:(NSDictionary*)dict {
&&&&loginListener = [[dict objectForKey:@&loginListener&] intValue];
那么如何在OC那边执行完之后调用lua的回调呢?可以看下面代码,比如我们将GameCenter登录后的playerId作为参数再回传给lua这边
&&&&cocos2d::LuaValueD
&&&&item[&code&] = cocos2d::LuaValue::stringValue(&succeed&);
&&&&item[&playerId&] = cocos2d::LuaValue::stringValue([[GKLocalPlayer localPlayer].playerID cStringUsingEncoding:NSUTF8StringEncoding]);
&&&&cocos2d::LuaBridge::pushLuaFunctionById(loginListener);
&&&&cocos2d::LuaBridge::getStack()-&pushLuaValueDict(item);
&&&&cocos2d::LuaBridge::getStack()-&executeFunction(1);
其中pushLuaFunctionById里传入的loginListener就是在 调用的login时从数据字典中取出的回调函数。最后再通过
cocos2d::LuaBridge::getStack()-&executeFunction(1);
这句来执行回调lua的函数。比如我回调的是lua里面的onLoginResult函数。里面的result参数就可以取到之前从OC那边传过来的数据了
function LoginScene:onLoginResult(result)
&&&&code = result.code
&&&&playerId = result.playerId
这样我们就完成了通过接入GameCenter后将GameCenter的参数传入给我们游戏自身的处理。之后再用这些参数做连接自身游戏服务端的具体登录,由于不同游戏的需求不同,就不继续说了。以上。
关注本帖(如果有新回复会站内信通知您)
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 关注CVP公众号
扫一扫 浏览移动版54被浏览7640分享邀请回答for i = 1, 3 do
textures[i] = 'pic' .. i .. '.png'
更好的做法应该在数据文件中书写:textures = { 'pic1.png', 'pic2.png', 'pic3.png' }
二者的区别在于:前者强烈依赖于命名格式,一旦图片名称修改为 'pic01.png',那么就得程序员重新修改代码,并且需要为每一种命名格式写一段代码,而后者只需要美术或者策划去维护。不管你是写 C++ 代码还是写 Lua 代码,都需要严格注重代码的可复用性,不可以因为脚本代码没有冗长的编译时间而随意写代码,这样做只会让你在频繁的需求变更中心力憔悴。上面的例子可能略显简单,一个经常在 cocos2dx lua 项目中产生的由逻辑实现数据的问题是动画创建。比如:CCSpawn:createWithTwoActions(
CCMoveTo:create(0.3, ccp(0, 0)),
CCScaleTo:create(0.3, 0)
在我经历过的两个项目中(都是中途加入,重构困难重重),如上形式的代码遍地都是,要么参数变一下,要么 CCScaleTo 变成 CCFadeOut 之类的,甚至而言是完全相同的代码。导致如上问题的原因是,很多程序员知道 UI 应该写在 XML 中,却不知道动画也应该写在数据文件中。修改后可能是这样:login_button_fadeout_animation = {
type = "同时进行下面的",
type = "移动到",
time = 0.3,
point= { 0, 0 },
type = "缩放到",
time = 0.3,
这样策划或 UI 设计师给你提动画更改需求时,你可以直接叫他自己去改了,只需要五分钟的培训可以节省日后很多时间。(题外话,用 action 机制制作的动画,即使写入数据文件中,也不利于策划、UI 设计师修改,更好的机制是关键帧技术)154 条评论分享收藏感谢收起0添加评论分享收藏感谢收起quick-cocos2dx实现战争迷雾
<span type="1" blog_id="1585392" userid='
分享到朋友圈
喜欢我的文章,请分享到朋友圈}

我要回帖

更多关于 quick cocos2dx 下载 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信