问题标签 [cocos2d-x]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
compilation - 如何用 Marmalade 编译 Cocos2d-X?
有没有人知道教程或三个简单的步骤来编译我用 Cocos2d-x 和 Marmalade 编写的代码?
我想把我已经在 Cocos2d-X 中编译和使用的代码插入到一个橘子酱项目中,然后编译。在很多地方都写得很容易,但我很难做到这一点。
如果有人有一些简单的步骤,我将非常感激:“Maramalade + cocos2d-x for dummies style :)”
谢谢,阿德里安。
c++ - 代码无法使用 Android NDK 编译
Cocos2d-x 是 Cocos2d-for-iPhone 的 C++ 端口。它具有跨平台的优势。我正在使用 Cocos2d-x 为 Android 和 iPhone 开发游戏。
现在我正在用 Android NDK 和 Xcode 编译一组 Cocos2d-X 代码。
在 Xcode 上,游戏在 iPhone 上编译和运行良好。
使用 Android NDK,编译会失败。(我使用的是官方的 Android r7c NDK)。
请帮忙。
编辑:对于那些对完整实现文件感兴趣的人。这里是。
以及完整的头文件
android-logcat - 对于 Eclipse,CCLog 不起作用。CCMessageBox 运行良好
我正在使用从 GitHub 签出的最新代码。(0.13.0 测试版)
我正在使用 Eclipse 为 Android 开发。我确实在 Android.mk 中添加了 *COCOS2D_DEBUG*。我检查并确保 COCOS2D_DEBUG 确实定义为 1。
问题:CCLog 不会向 LogCat 打印任何内容。同时,CCMessageBox 运行良好。
(然后我在 iOS 上测试了同一组代码,CCLog 和 CCMessageBox 都运行良好。)
我在这里想念什么?
android - 更改为新 Activity 时在 Android Native 中崩溃
我的应用程序无法打开 OpenFeint 仪表板方法。原生 c++ 库的实现使用 cocos2d-x 作为图形库,但它有一个处理程序和一个包装器以允许使用 OpenFeint 函数。OpenFeint 初始化和非活动方法正常工作。
当从 Jni 调用或 Java onCreate 初始化中调用诸如 openLaderBoards 或 openAchievements 之类的 UI 仪表板函数时,应用程序将崩溃。
编辑:我已经测试过,我尝试的任何活动更改都会发生这种情况,甚至是我自己的新课程。
EDIT2:我有一个类似问题的+100赏金,任何想出答案的人都会得到它。
代码
活动:
包装:
处理程序 openDashboard 函数:
显现:
Stacktrace(不会在 SO 中缩进):
cross-platform - cocos2d-x 的 CCScrollView 有效吗?
编辑:通过足够的重写和评论,我已经运行它,将在下面为其他人发布最终结果。
编辑2:我一直在更新我自己的版本,并且我了解到原始编码器对 C++ 不是很好,您可能需要在使用之前检查其中的所有内容,查看下面的评论
cocos2d-x 目前可用的 CCScrollView 有一个主要缺陷:它搞砸了。
具体来说,cpp 函数标头与 .h 文件的标头不匹配。cpp 文件指的是 UIEvent 和 NSMutableArray,而不是 X-Platform。
滚动视图本身必须添加一个数组,这限制了您使用 for 循环创建菜单项(如果创建菜单项)的能力,因为您不能使用可变的,并且它们不会像彼此一样子类化iOS 所以你不能只使用一个可变的然后说 CCArray * array = mutable->getMutableArray() 或类似的。
此外,定义已经过时(尽管可以通过 cocos2d-x 网站上的翻译规则添加 CCX_SAFE_DELETE 来修复),并且各种随机模板试图创建甚至不在项目中的 NS 和 UI 对象,因为我不知道为什么。
基本思想是,除了使用可变数组之外,这个类太混乱了,无法翻译成 C++。我不相信作者编译了他拥有的版本,因为标题不匹配。我以为我下载了 cpp 和 .h 文件(每个都有 2 个),并且两者都有 UIEvent 而不是 CC 以及其他问题。
注意:我已经修复了上面的各种问题,并且在各个地方将 SelectorProtocol 更改为 CCObject,但它只是变得不堪重负。
也许我应该改用 Parallax 节点?
这太荒谬了,也许它对 Cocos2d 很好,但它不适用于 c2d-X。无论如何,我会重新编码和搜索,感谢您的任何建议!
编辑:这是我现在正在使用的课程。尚未完成编辑,但这些可以让任何人开始,并且不仅仅在 iPhone 上进行编译
标题:
CPP
c++ - 虚函数调用错误的函数,C++和Cocos2dX中的名字完全不同
虽然我看到过多的 Stack Overflow Questions and Answers 虚函数调用类似名称的子/超类函数,但我得到了这个:
使用 loadWithData 加载场景的条件是我将函数设为 void name(types)。我遵循 cocos2d-x 的模式并使用了 virtual,在这种情况下,它调用了 setScaleX,我使用了调试器并进入了它。
我有两个问题。
1)如果 scene() 函数返回一个场景(带有 TitleDescription 类型的子节点),那么这个调用如何运行(当非虚拟并按我想要的方式运行时,例如:调用正确的函数)?
2)当它搞砸时,vTable是否只是指向一个垃圾位置,恰好总是相同的功能?
注意:在 cocos2d(和 X)中,场景是图层的子类,是 CCObject 的子类。CCObject 确实包含被调用的函数,但名称和参数差异很大,我不明白为什么调用名称和参数完全不同的函数。
我对这方面的任何参考资料和良好的文档持开放态度。我怀疑我的演员表(设置为重新解释只是为了强制绕过所有内容),这可能是为什么虚拟函数每次运行都指向同一个函数,包括当我将签名更改为 bool 而不是 void 并清理构建时.
注意:XCode 是我所处的环境。我也不相信它使用 LLVM。我会尝试调整它,看看会发生什么。
像其他人一样,我认为我并不完全理解 vFunctions,尽管我知道抽象类的使用和强制覆盖。(作为具有该功能的第一类,我不明白为什么此时它需要是虚拟的,但由于我正在做的事情,我确实计划在子类中扩展该功能)。
谢谢,史蒂夫·J
android - 当 Android 设备进入睡眠状态时,CCSpriteFrame 消失了
我正在使用 cocos2d-x,我对使用这些很棒的东西感到满意。
我将 CCSpriteFrameCache 与一些 plist 文件一起使用。但是当我按下我的 Android 设备的睡眠按钮并再次回到游戏时,似乎又加载了所有精灵帧!我注意到因为它需要 3~4 秒才能从睡眠模式回到游戏。如果我不使用 CCSpriteFrameCache,它可以正常工作。当我在 iPhone 上试用时,它肯定很好。
我注意到它一直是 cocos2d-x 论坛上的一个问题。
有什么帮助吗?我不认为人们会理解每次从睡眠模式回到游戏时会有 3~4 秒的延迟。
谢谢。上帝祝福你。
cocos2d-iphone - cocos2d/cocos2dx 传统的 update-render-loop 方法是不是矫枉过正?
所以可以说我正在制作棋盘游戏。我有一个游戏板阵列,我的逻辑需要检查位置和碰撞检测,没关系。
传统上使用像directX这样的东西,你会有一个游戏循环,测试一些逻辑,更新游戏板数组,最后绘制屏幕,但是使用cocos2dx我们不直接在屏幕上绘制,我们将精灵添加到图层中,其余的由cocos完成!
例如..
- 初始化一个代表游戏板的游戏数组
- 初始化一个游戏对象
- 将对象添加到数组
- 更新屏幕(将数组渲染到屏幕)
- 开始游戏循环
- 测试一些逻辑条件
- 从数组中删除对象
- 更多 测试一些逻辑条件,更新对象位置
- 将对象添加到数组
- 再次更新屏幕
- 环形
前一个可以正常工作,但我不需要从图层中删除对象,只需更新其位置并重新渲染到屏幕,如果我保留对该对象的引用,我可以使用 cocos2d/cocos2dx 移动它,并且更新数组。
我可以继续这种方法,但我想知道我是否遗漏了什么。
游戏阵列有助于游戏逻辑并模仿实际的可玩区域,但我不禁觉得它有点石器时代。
有人可以帮忙吗,我完全错过了情节吗?
android-ndk - 在 jni main.cpp ( cocos2d-x) 中访问运行场景
我想在 jni main.cpp 中访问我的场景,但是当我打电话时cocos2d::CCDirector::sharedDirector()->getRunningScene()
我无法得到它!我的代码:
除了helloworld,我没有其他场景。
cocos2d-x - cocos2d :: CCmoveTO
嗨,我是 cocos2dx 编程的新手............
我正在尝试对目标精灵进行抛射运动
// 在 addtarget() 部分
nextPoint 是一个函数,它返回 struct p(它有时间、速度和空间坐标 t,x,y,vx,vy)当在循环外,它运行得很好,但是当它在里面时,它没有显示任何调试完成和所有坐标很好尝试删除 NUll 不能做最后使用贝塞尔,所以现在它可以部分工作。但无法理解为什么 CCMoveTo 不起作用。它总是显示 (60,60) 的初始坐标以及一些很好的 cocos 2dx 教程链接,供那些刚接触手机游戏编程的人使用。谢谢!