我正在开发一款使用Cocos2d-x到Android和iPhone的游戏.在开始使用时,我开始使用这个库时遇到了很多问题,因此,在这个问题中,我想收集所有的基础,中等和专家教程,因为有很多信息问题都会出现同样的错误.当我开始时,我不得不使用我的朋友谷歌在许多网站上看了很多.希望这有助于人们现在开始.全部用c ++.
初学者
介质
高级
扩展
代码示例
当我阅读Cocos2dx 3.0
API时,我发现了这样的事情:
auto listener = [this](Event* event){
auto keyboardEvent = static_cast<EventKeyboard*>(event);
if (keyboardEvent->_isPressed)
{
if (onKeyPressed != nullptr)
onKeyPressed(keyboardEvent->_keyCode, event);
}
else
{
if (onKeyReleased != nullptr)
onKeyReleased(keyboardEvent->_keyCode, event);
}
};
Run Code Online (Sandbox Code Playgroud)
什么[this]
意思?这是新的语法C++11
吗?
在使用cygwin编译我的cocos2d-x项目时,我收到以下警告.
`/cygdrive/e/project/MyGame/proj.android `
/cygdrive/e/android-ndk-r8e/build/core/add-application.mk:128: Android NDK: WARNING:APP_PLATFORM android-9 is larger than android:minSdkVersion 8 in ./AndroidManifest.xml
Run Code Online (Sandbox Code Playgroud)
我使用的是NDK版r8e.我的AndroidManifest.xml中的最小SDK版本是8,但我没有在任何地方指定APP_PLATFORM作为android-9.我该如何将其更改为8.
任何人都可以告诉我如何解决这个警告,因为我认为这可能会导致问题.
当我使用visual studio 2015编译cocos2d-x(版本3.3)时,发生错误,说:
致命错误C1189:#error:snprintf的宏定义与标准库函数声明冲突(编译源文件..\base\s3tc.cpp)
源代码是:
#ifdef snprintf
#error Macro definition of snprintf conflicts with Standard Library
function declaration
#endif
Run Code Online (Sandbox Code Playgroud)
谁能告诉我什么是错的?
我和Cocos2d一起为iPhone工作过,觉得很愉快.我正在开始另一个项目,偶然发现了Cocos2d-x,一个C++端口.我被能够(考虑)一次构建多个平台的想法所吸引.我对Obj-C和C++同样感到满意,并不是在寻找两种语言之间的比较,除非它与使用Cocos2d特别相关.
有没有人使用这两个版本的引擎,你能否评论两者的具体优缺点?Cocos2d-x"完成了"吗?可靠?
有没有办法知道屏幕上显示的键盘大小?
我正在使用Cocos2dx进行编程,但我想知道Android部分或Cocos部分屏幕中显示的键盘高度,这没关系.
我知道Keyboard有一个getHeight()方法,但我不想创建新的键盘,我想使用默认键盘.
我有一些与Android Facebook SDK交互的代码,异步.不幸的是,这意味着当它返回时它在后台线程中.
Cocos-2dx更喜欢我在主线程中与它进行交互,特别是当告诉Director切换场景时(因为它涉及Open GL)
有没有办法让一些代码在主线程上运行?
昨天,我将Xcode更新到最新版本(5.1 (5B130a))
以兼容iOS 7.1
.然后我构建我的项目,当选择64位模拟器(例如:iPhone Retina 4英寸64位)时,我"Cast from pointer to smaller type 'int' loses information"
在EAGLView.mm
file(line 408
)中得到错误.
我正在使用cocos2d-x-2.2.2
.在我更新Xcode之前,我的项目仍然可以在所有设备上构建和运行.
感谢所有推荐.
更新:今天,我下载了最新版本的cocos2d-x(cocos2d-x 2.2.3).但问题仍然存在.
以下是发生错误的一段代码:
/cocos2d-x-2.2.2/cocos2dx/platform/ios/EAGLView.mm:408:18: Cast from pointer to smaller type 'int' loses information
// Pass the touches to the superview
#pragma mark EAGLView - Touch Delegate
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
if (isKeyboardShown_)
{
[self handleTouchesAfterKeyboardShow];
return;
}
int ids[IOS_MAX_TOUCHES_COUNT] = {0};
float xs[IOS_MAX_TOUCHES_COUNT] = {0.0f};
float ys[IOS_MAX_TOUCHES_COUNT] = {0.0f};
int …
Run Code Online (Sandbox Code Playgroud) 我正在尝试编译在cocos2d-x上开发的Android本机应用程序.当我尝试调试我的应用程序时,我收到以下错误.
Android NDK: jni/Android.mk: Cannot find module with tag 'CocosDenshion/android' in import path
Android NDK: Are you sure your NDK_MODULE_PATH variable is properly defined ?
Android NDK: The following directories were searched:
Run Code Online (Sandbox Code Playgroud)
我的android.mk文件中有以下几行
$(Call import-add-path, $(LOCAL_PATH)/../../../CocosDenshion/android)
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static
include $(BUILD_SHARED_LIBRARY)
$(call import-module,CocosDenshion/android)
$(call import-module,cocos2dx)
Run Code Online (Sandbox Code Playgroud)
在我的build_native.sh中,NDK_MODULE_PATH定义为
"NDK_MODULE_PATH=${COCOS2DX_ROOT}:${COCOS2DX_ROOT}/cocos2dx/platform/third_party/android/prebuilt"
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决这个问题.
在我的一个项目中使用'cocos2d-iphone'之后,我正在尝试决定我应该为Android游戏使用哪种Cocos2d.我个人的利弊清单:
的Cocos2D-X
专业人士:将游戏带入iOS后应该更容易,也可能是其他平台
缺点/疑惑:在Android上调试c ++代码(简单与否?),NDK应用程序与各种Android设备的兼容性(有多少问题?),访问特定于平台的功能(应用程序内购买等)
的cocos2d-机器人
优点:所有Java,更易于设置和访问特定于平台的功能
缺点:必须从Java转换为c ++或Objective-C用于其他平台
我没有想到的任何一个选项是否存在其他问题?如果有人必须做出这个选择,你选择了什么?为什么?