cocos2dx传奇源码(cocos2dx-3.6的luajit怎么了)
本文目录
- cocos2dx-3.6的luajit怎么了
- cocos2dx 3.x版本中导入tiled地图如何导入对象层中对象的自定义信息(源码+注释)
- win7 用vs2015 打开cocos2dx 源码,一大片提示错误,都是 namespace “cocos2d::std“ 没有 xxx 这种
- cocos2dx倒计时怎么实现
- cocos2dx Point::ZERO
cocos2dx-3.6的luajit怎么了
cocos2d-x中luajit的使用
新版本的cocos2d-x使用了luajit来替代原始的lua,好处一是可以极大的提高运行速度(android下可以开jit,运行速度提高10~60倍,ios下不可以开jit,运行速度也可以提高2~3倍)。 二是luajit编译的字节码现阶段来说无法反编译,也就是说无法破解。 这里对luajit进行详细的说明。
1、基本使用。这个很简单,不用修改任何代码,与lua5.1完全兼容。 对应的头文件和库要替换成luajit的(与lua命名相同)
2、发布时编译成字节码。
***隐藏网址***
编译完成后,要注意luajit****和源代码src/jit文件夹要同时并且匹配使用。否则运行时会出现 "unknown luaJIT command or jit.* modules not installed"的错误。
编译成字节码的命令如下: luajit -b 原始文件 输出文件
更多详细说明可以直接执行 luajit -b来获取。 这里还要注意,输出文件最好保持.lua的扩展名,否则require文件的时候会提示找不到文件。除非require里面使用的完整名字。
我在编译字节码时还碰到了一个问题,就是无论编译什么文件都提示这个 "luajit ’=’ expected near ’《eof》’" ,后来换了luajit的版本后就没有出现了。可能跟我一开始手欠改了luajit源代码有关。
3、编译luajit的静态库文件(for android)
编译字节码所用的执行文件和我们开发程序时使用的静态库文件要保持版本一致。 windows版本所需要的文件在编译执行文件时就已经生成。
cocos2dx 3.x版本中导入tiled地图如何导入对象层中对象的自定义信息(源码+注释)
步骤如下:
1. cocos2d-x 中使用类 TMXTiledMap 创建瓦片地图
2. 使用 TMXTiledMap 中的 getObjectGroup 接口取得对象层
3. 使用对象层的 getObject 接口获取对象信息,对象信息是一个 ValueMap 实例
4. 从 ValueMap 中取出数据
测试地图如下所示:
如图所示:
1. 有一个名为 object 的对象层
2. object 对象层中有一个名为 test 的对象
3. test 对象有一个名为 attr 的属性
代码以及注释如下所示:
win7 用vs2015 打开cocos2dx 源码,一大片提示错误,都是 namespace “cocos2d::std“ 没有 xxx 这种
可能程序不兼容, 可以更换个版本试试。另外建议参考下程序对配置的要求。
或者右键需要运行的程序 选择兼容性 用兼容模式运行试试。
cocos2dx倒计时怎么实现
在CCDirector中有个getScheduler()得到时刻表【调度者】,我们可以使用时刻表【调度者】CCScheduler,来暂停所有的调度。在CCScheduler暂停所有的调度是这样子的:
CCScheduler.h
/** Pause all selectors from all targets.
You should NEVER call this method, unless you know what you are doing.//提示我们不应该调用此方法,但是目前我测试中没有出现什么问题
@since v2.0.0
*/
CCSet* pauseAllTargets();
CCSchedule.cpp
CCSet* CCScheduler::pauseAllTargets()
{
return pauseAllTargetsWithMinPriority(k***rioritySystem);
}
CCSet* CCScheduler::pauseAllTargetsWithMinPriority(int nMinPriority)
{
CCSet* idsWithSelectors = new CCSet();// setWithCapacity:50];
idsWithSelectors-》autorelease();
// Custom Selectors
for(tHashSelectorEntry *element = m_pHashForSelectors; element != NULL;
element = (tHashSelectorEntry*)element-》hh.next)
{
element-》paused = true;
idsWithSelectors-》addObject(element-》target);
}
// Updates selectors
tListEntry *entry, *tmp;
if(nMinPriority 《 0) { DL_FOREACH_SAFE( m_pUpdatesNegList, entry, tmp ) { if(entry-》priority 》= nMinPriority)
{
entry-》paused = true;
idsWithSelectors-》addObject(entry-》target);
}
}
}
if(nMinPriority paused = true;
idsWithSelectors-》addObject(entry-》target);
}
}
DL_FOREACH_SAFE( m_pUpdatesPosList, entry, tmp )
{
if(entry-》priority 》= nMinPriority)
{
entry-》paused = true;
idsWithSelectors-》addObject(entry-》target);
}
}
return idsWithSelectors;
}
暂停之后,我们再次执行的时候需要恢复,方法如下:
在看完源码之后,来说下实际运用:
点击暂停按钮:
点击恢复按钮:
cocos2dx Point::ZERO
Point::ZERO 是Point类的一个静态Point对象
class Point{
public:
static Point ZERO=Point(0,0);
}
///
学习这个得先学好C++,不需要什么资料的,源代码是最好的学习资料。