quick-cocos2dx学习笔记
20140603
下载quick,拉开拉链,跑setup.bat(注意,setup事就是在系统环境变量里加入QUICK_COCOS2DX_ROOT,假设不运行这个的话,启动player时会报找不到framework.init的错误)
编码lua有2个工具。sublime和LDT。
1.sublime仅仅能编码不能调试。能够加入一个叫QuickXDev的插件。这个插件是专门针对quick开发的。
可參考:
http://hi.baidu.com/wolf_panjin/item/b9bb6ffaab659fdd42c36aa0
http://my.oschina.net/lonewolf/blog/175781
http://www.cnblogs.com/9420sunshine/p/3739020.html
2.LDT,这个是eclipse上的一个扩展插件。能够调试lua。
可參考:
http://blog.csdn.net/chichigan1314/article/details/19137749
http://zengrong.net/post/1951.htm
p=1527" target="_blank">廖大的教程
走。卡在了启动player的时候,模拟器提示waiting for connect to debugger,然后就死在那里了,eclipse下的断点也没走到,查评论发现有人和我遇到了一样的问题,而且以下有解决的方法“试试不勾选break on first line”。cool!
在debug configuration里去掉了这个选项就能正常进入游戏并调试了,一切正常。
20140610
刚接触quickX,lua也不熟。非常想找个教程学习学习。在网上搜了非常久也木有系统的教程。于是到quickX论坛发帖求助,廖大曰:“建议花几天时间练习一下Lua的基本使用方法。然后对着 samples 学。
直接改 sample 来学习。 ”
啥也不想了。打开eclipse开撸。先是仿照quickX自带的样例中mvc这个学习。这里有个actor的类适合在游戏中的角色使用,照着样例代码往下撸。然后开player执行。无反应,查log,报空值,细致查找。最后发现是.和:的区别,google被封。不会翻墙,baidu之,可得解(參考),另外发现样例里的状态机非常好玩,baidu之得解(參考)。
可是发现代码里有几个keyword(class, clone, import)在网上搜不到。郁闷+苦闷。遂notepad++在quickX的文件夹下find。最终挖出来一些好东东。"framework"就是这个文件夹,里面的functions.lua有以上的具体解说及lua原代码,另一些pos神马的。则在shortcodes.lua里得解。看来仅仅要把framework文件夹下的文件都看会了就不须要教程了。
总结:framework+samples+lua_test(这个在cocos2dx的样例文件夹下)+LDT这些应该能够应付初期开发了。
“自助者天助”大概就是这个意思吧。
今天在quickX论坛上看到了个解说使用vs调试lua的帖子(
tid=205043&page=1" target="_blank">具体信息点我
),讲的是怎么用BabeLua调试,不错。收集过来:BabeLua是一款基于VS2012/2013(简称VS)的免费开源的Lua集成开发环境,在Lua编辑和调试方面。具有例如以下功能和特性:
●Lua语法高亮
●语法检查
●自己主动补全
●一键凝视
●自己定义代码折叠
●project管理
●高速搜索和跳转
●文件大纲
●注入宿主程序内对Lua脚本进行调试
●设置断点观察变量值
●查看堆栈信息
BabeLua能够调试哪些程序
已经通过測试的程序:Lua5.1 for windows。 Cocos2d-x(含quick); Babe2D(Boyaa)
正在測试的程序:Lua5.2。 LuaJIT; Love2d; Moai。 Gideros; Marmalade Quick; Corona; GSL-shell; 迅雷Bolt
下载地址:http://pan.baidu.com/s/1xnwtw
PS:须要装VS2012/2013。不能是Express版
self._uiLayer = <span style="color:#ff0000;">cc.Layer</span>:create()
self:addChild(self._uiLayer) self._widget = ccs.GUIReader:getInstance():widgetFromJsonFile("cocosui/UITest/UITest.json")
self._uiLayer:addChild(self._widget)
2.2.3代码
self._uiLayer = <span style="color:#ff0000;">TouchGroup</span>:create()
self:addChild(self._uiLayer) self._widget = GUIReader:shareReader():widgetFromJsonFile("cocosgui/UITest/UITest.json")
self._uiLayer:addWidget(self._widget)
有点坑。这个升级版本号的时候得改成cc.Layer,
tid=196724" target="_blank">http://www.cocoachina.com/bbs/read.php?tid=196724
CocosStudioUI编辑器自适应后部分控件无法显示的问题
刚发现了新版Ui编辑器有进行简单适配的參数了,立刻勾选“自适应分辨率”,然后又手欠的把root的尺寸百分比勾选上了,还非常happy的填上了1.0 1.0。然后导出。载入到project里。结果发现除了左下角的部分UI可以显示出来,其它都没了,我乐个擦,好奇妙呀,上cocoachina论坛上搜,还真碰到了和我一样挫的家伙(參考),往下翻解决的方法。发现根节点的"UIproject尺寸和模式不要勾选百分比",试了一下。好使,原来是自己填错參数了。
总结:仅仅有根节点能够勾选“自适应分辨率”,根节点勾选“自适应分辨率”之后不能改动根节点的“尺寸和模式”參数
[3.6750] [DEPRECATED] Node.registerScriptHandler() is deprecated, please use Node.addNodeEventListener()
[3.6760] [DEPRECATED] Node.scheduleUpdate(handler) is deprecated, please use Node.addNodeEventListener()
player输出了这种log,我想了想,还是要注意一下log的提示把,既然人家说这个函数要作废了,我还是使用新的吧,于是四处查找addNodeEventListener()怎么加入每帧更新函数调用方法。或许是我水平太次了吧,网上都搜不到这个的相关信息,全然不知道怎么加,于是自己从quick的框架里、样例里查找,可是没有找到,有一种想要拉翔却怎么也拉不出来的感觉,无奈開始查引擎的c++代码。我原来用的是self:scheduleUpdate(handler(self, self.tick))的方式调用帧更新回调,那就看看CCNode::scheduleUpdate()都干了什么,理论上c++的代码里应该会抛出相关的回调,最后查到了CCNode::update,第一句就是if
(hasScriptEventListener(NODE_ENTER_FRAME_EVENT)),擦这不就是我须要的么,之前看quick里的samples代码就看到过cc.NODE_ENTER_FRAME_EVENT的字样,可是没以为是用于scheduleUpdate的,瞎了我的18克拉狗眼!
总结:Node.registerScriptHandler() 和 Node.scheduleUpdate() 都使用self:addNodeEventListener(cc.NODE_ENTER_FRAME_EVENT, function(dt) self:onEnterFrame(dt) end) self:scheduleUpdate_()取代。(这两个都得有)另外在OnExit里最好加上self:removeAllNodeEventListeners()
PS:我好像发现了什么,怎么感觉self:scheduleUpdate_()这么眼熟。之前在项目一開始的时候我好像加过这句话。后来不知道为啥把帧更新删了……
PS2:我又发现了一个。为什么我当时没有直接搜“Node.scheduleUpdate(handler) is deprecated, please use Node.addNodeEventListener()”这句话。丫就在NodeEx.lua里躺着。找到这句话就能知道正确的调用方式了~~~
local A = import("A")
local B = class("B", A)
B.super.ctor(self) 和
B.super:ctor()
对与这个我仅仅想说“呵呵”
本来刚接触lua的时候,学习了冒号和点的差别。立即感觉沾沾自喜,原来就是是否传self作为第一个參数的差别。事实上这句话是没错的,quick的框架里class中调用父类ctor函数都是B.super.ctor(self)这样写的,我学会了冒号和点的差别之后立刻把这个点换成了冒号,还自以为自己非常聪明,能够少写的self,呵呵,呵呵,呵呵。
我已经饿得没力气再扯蛋了,在这里那个self事实上代表的是B的实例,可是我改成B.super:ctor()之后,默认传进去的參数就变成基类A的了,B.super = A,我手欠,我手欠,我手欠
补充:后来再想想能够利用这个实现c++类的静态成员功能。(A.staticMember)直接这样调用就能够了。
(const char*)result, resultLength); ,此stack和coroutine里的stack可能已经不是一个东东了,当从c++返回的时候就出问题了。coroutine原理探析可參考以下的链接,感觉讲得比較好。
版权声明:本文博主原创文章,博客,未经同意不得转载。
quick-cocos2dx学习笔记的更多相关文章
- cocos2d-x学习笔记(18)--游戏打包(windows平台)
cocos2d-x学习笔记(18)--游戏打包(windows平台) 之前做好的游戏,都是在vs2008下编译执行的.假设说想把游戏公布到网上或者和其它人一起分享游戏,那就得对游戏 ...
- Cocos2d-x学习笔记(十四)CCAutoreleasePool具体解释
原创文章,转载请注明出处:http://blog.csdn.net/sfh366958228/article/details/38964637 前言 之前学了那么多的内容.差点儿全部的控件都要涉及内存 ...
- Cocos2d-x 学习笔记(3.1) Scene 场景与场景切换
1. Scene 简介 游戏中我们看到/看不到的所有元素都是展示在场景之Scene上. 我们可以把场景比作放在地上的没盖纸箱,层Layer是纸箱里堆放的玻璃,Sprite等元素画在玻璃Layer上,这 ...
- Cocos2d-x 学习笔记(19) Control Invocation
[Cocos2d-x 学习笔记 目录链接] 1. 简介 control为其子类提供了touch回调函数,当子类触发EventType相关事件时,会调用相关的回调函数. control对象接收到的事件类 ...
- Cocos2d-x 学习笔记(20) ControlButton
[Cocos2d-x 学习笔记 目录链接] 1. 简介 ControlButton实现了按钮功能,根据触摸的位置和移动的过程可识别9中EventType类型,执行对应的回调函数. 直接继承了Contr ...
- Cocos2d-x 学习笔记(22) TableView
[Cocos2d-x 学习笔记 ]目录 1. 简介 TableView直接继承了ScrollView和ScrollViewDelegate.说明TableView能实现ScrollView拖动cont ...
- Cocos2d-x 学习笔记(25) 渲染 绘制 Render
[Cocos2d-x]学习笔记目录 本文链接:https://www.cnblogs.com/deepcho/p/cocos2dx-render.html 1. 从程序入口到渲染方法 一个Cocos2 ...
- Cocos2d-x学习笔记(三)CCNode分析
原创文章.转载请注明出处:http://blog.csdn.net/sfh366958228/article/details/38706483 通过前两份学习笔记,我们不难发现CCScene.CCLa ...
- Cocos2d-x学习笔记(一)HelloWorld
原创文章,转载请注明出处:http://blog.csdn.net/sfh366958228/article/details/38656755 前言 正式来公司实习已有一月,前一月主要是看了<C ...
- Cocos2d-x 学习笔记(26) 从源码学习 DrawCall 的降低方法
[Cocos2d-x]学习笔记目录 本文链接:https://www.cnblogs.com/deepcho/cocos2dx-drawcall-glcalls 1. 屏幕左下角 我们通常在Cocos ...
随机推荐
- win7+SQL2008无法打开物理文件 操作系统错误 5:拒绝访问 SQL Sever
今天在win7+SQL2008的环境下操作分离附加数据库,分离出去然后再附加,没有问题.但是一把.mdf文件拷到其它文件夹下就出错,错误如下:无法打开物理文件 "E:\db\MyDB.mdf ...
- Xcode 的正确打开方式——Debugging(转)
转自CocoaChina http://www.cocoachina.com/ios/20150225/11190.html 程序员日常开发中有大量时间都会花费在 debug 上,从事 iOS 开发不 ...
- 关于C#编程中引用与值类型赋值的一些容易犯错的地方
值类型与引用类型的区别在于:值类型在赋值的时候是拷贝值,引用类型在赋值的时候的拷贝引用.记住这一个原则,我们再来分析一些具体情况: PointStruct pt1 = ,); PointStruct ...
- js apply
1.作用 函数的apply方法的作用与call方法类似,也是改变this指向,然后再调用该函数.唯一的区别就是,它接收一个数组作为函数执行时的参数 Fn.apply(obj, [arg1, arg2, ...
- IOS 在Xcode 4.x以上添加静态库
参考网站:http://my.oschina.net/edwardlau/blog/95924 常用的代码可以通过静态库进行抽出来作为公共类方法,方便在其他地方调用,一般来说我们要准备2套静态库,一套 ...
- css expression explaination
http://blogs.msdn.com/b/ie/archive/2008/10/16/ending-expressions.aspx 据说已经被弃用的IE css写法,为了修复一些IE8及老版本 ...
- seo小技巧(转载)
转载自前端网:五行缺火 优化技巧是老师在课堂上教不了你的,而自己也不可能在练习中领悟,最便捷的方法就是听取别人的经验,所以转载一下 SEO要点:1.语义化html标签,用合适的标签嵌套合适的内容,不可 ...
- js 遇到 Permission denied to access property ***
在开发过程 子页面刷新父页面时,中遇到的 Permission denied to access property *** 问题,处理如下: 这是一个跨域的问题,其实很简单 就是子页面所在域名不在父页 ...
- Ubuntu完全教程,让你成为Ubuntu高手!
Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音.了解发音是有意义的,您不是第一个为此困惑的人,当然,也不会是最后一个:) 大多数的美国人读 ubun ...
- TableView_编辑 实例代码
@interface MJViewController () <UITableViewDataSource, UITableViewDelegate> { NSMutableArray * ...