这就比较对了,这是 1.2 到 1.3 的接口改变导致的
需要把 _global->get() 改成 _global.ref().get()
还有,你既然在调试阶段,就不要用 Creator 来进行编译了,出了错不方便看,直接用 Xcode 编译会效率高很多
这就比较对了,这是 1.2 到 1.3 的接口改变导致的
需要把 _global->get() 改成 _global.ref().get()
还有,你既然在调试阶段,就不要用 Creator 来进行编译了,出了错不方便看,直接用 Xcode 编译会效率高很多
ios的按照这个修改后,可以得到返回值啦。
安卓的编译报错:
Building mode: debug
Using Eclipse project : /Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/runtime-src/proj.android
running: ‘/Users/allen/Documents/adt-bundle-mac-x86_64-20140702/sdk/tools/android update project -t android-14 -p /Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/runtime-src/proj.android’
Updated project.properties
Updated local.properties
Updated file /Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/runtime-src/proj.android/proguard-project.txt
It seems that there are sub-projects. If you want to update them
please use the --subprojects parameter.
running: ‘/Users/allen/Documents/adt-bundle-mac-x86_64-20140702/sdk/tools/android update lib-project -p /Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/cocos2d-x/cocos/platform/android/java -t android-10’
Updated project.properties
Updated local.properties
Updated file /Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/cocos2d-x/cocos/platform/android/java/proguard-project.txt
Building native…
NDK build mode: debug
NDK_TOOLCHAIN_VERSION: 4.9
running: ‘/Users/allen/Documents/CocosProjects/android/android-ndk-r10e/ndk-build -C /Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/runtime-src/proj.android -j4 NDK_MODULE_PATH=/Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/cocos2d-x:/Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/cocos2d-x/cocos:/Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/cocos2d-x/external NDK_TOOLCHAIN_VERSION=4.9 NDK_DEBUG=1’
Android NDK: WARNING: APP_PLATFORM android-14 is larger than android:minSdkVersion 9 in ./AndroidManifest.xml
make: Entering directory /Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/runtime-src/proj.android' [armeabi-v7a] Compile++ arm : cocos2d_js_static <= CCJavascriptJavaBridge.cpp [armeabi-v7a] StaticLibrary : libcocos2d.a [armeabi-v7a] Compile++ thumb: cocostudio_static <= CCComController.cpp [armeabi-v7a] Compile++ thumb: cocostudio_static <= CCComRender.cpp [armeabi-v7a] Compile++ thumb: cocostudio_static <= CCInputDelegate.cpp [armeabi-v7a] Compile++ thumb: cocostudio_static <= DictionaryHelper.cpp [armeabi-v7a] Compile++ thumb: cocostudio_static <= CocoLoader.cpp [armeabi-v7a] Compile++ thumb: cocostudio_static <= CCFrame.cpp [armeabi-v7a] Compile++ thumb: cocostudio_static <= CCTimeLine.cpp [armeabi-v7a] Compile++ thumb: cocostudio_static <= CCActionTimeline.cpp [armeabi-v7a] Compile++ thumb: cocostudio_static <= CCActionTimelineNode.cpp [armeabi-v7a] Compile++ thumb: cocostudio_static <= CCBoneNode.cpp In file included from /Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/cocos2d-x/external/android/armeabi-v7a/include/spidermonkey/js/CallArgs.h:38:0, from /Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/cocos2d-x/external/android/armeabi-v7a/include/spidermonkey/jsapi.h:26, from /Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/cocos2d-x/cocos/scripting/js-bindings/manual/platform/android/CCJavascriptJavaBridge.h:29, from /Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/platform/android/CCJavascriptJavaBridge.cpp:24: /Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/cocos2d-x/external/android/armeabi-v7a/include/spidermonkey/js/RootingAPI.h: In function 'jint Java_org_cocos2dx_lib_Cocos2dxJavascriptJavaBridge_evalString(JNIEnv*, jclass, jstring)': /Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/cocos2d-x/external/android/armeabi-v7a/include/spidermonkey/js/RootingAPI.h:520:5: error: 'JS::MutableHandle<T>::MutableHandle(N, typename mozilla::EnableIf<((mozilla::IsNullPointer<N>::value || mozilla::IsSame<N, int>::value) || mozilla::IsSame<N, long int>::value), int>::Type) [with N = std::nullptr_t; T = JS::Value; typename mozilla::EnableIf<((mozilla::IsNullPointer<N>::value || mozilla::IsSame<N, int>::value) || mozilla::IsSame<N, long int>::value), int>::Type = int]' is private MutableHandle(N, ^ /Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/platform/android/CCJavascriptJavaBridge.cpp:49:71: error: within this context ScriptingCore::getInstance()->evalString(strValue.c_str(), nullptr); ^ /Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/platform/android/CCJavascriptJavaBridge.cpp:49:71: error: use of deleted function 'JS::MutableHandle<T>::MutableHandle(N, typename mozilla::EnableIf<((mozilla::IsNullPointer<N>::value || mozilla::IsSame<N, int>::value) || mozilla::IsSame<N, long int>::value), int>::Type) [with N = std::nullptr_t; T = JS::Value; typename mozilla::EnableIf<((mozilla::IsNullPointer<N>::value || mozilla::IsSame<N, int>::value) || mozilla::IsSame<N, long int>::value), int>::Type = int]' In file included from /Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/cocos2d-x/external/android/armeabi-v7a/include/spidermonkey/js/CallArgs.h:38:0, from /Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/cocos2d-x/external/android/armeabi-v7a/include/spidermonkey/jsapi.h:26, from /Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/cocos2d-x/cocos/scripting/js-bindings/manual/platform/android/CCJavascriptJavaBridge.h:29, from /Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/cocos2d-x/cocos/scripting/js-bindings/proj.android/../manual/platform/android/CCJavascriptJavaBridge.cpp:24: /Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/cocos2d-x/external/android/armeabi-v7a/include/spidermonkey/js/RootingAPI.h:520:5: note: declared here MutableHandle(N, ^ [armeabi-v7a] Compile++ thumb: cocostudio_static <= CCSkeletonNode.cpp make: *** [obj/local/armeabi-v7a/objs-debug/cocos2d_js_static/__/manual/platform/android/CCJavascriptJavaBridge.o] Error 1 make: *** Waiting for unfinished jobs.... make: Leaving directory /Users/allen/Documents/CocosProjects/mql-build/jsb-default/frameworks/runtime-src/proj.android’
Error running command, return code: 2.
这一行把 evalString 的第二个参数去掉
按照这个修改,可以编译通过了:
Cocos2dxJavascriptJavaBridge.evalString(“console.log(’######java onEnterForeground#######’);”);
把这个语句放在activity的onpause里可以执行。
但是放在helper的onEnterForeground方法里就直接fatal 闪退了,在1.3里为什么放在这个位置就可以执行呢?需要怎么改才有可能可以在这调用呢?
这应该是因为第一次进入的时候 JS 环境还没有准备好,你可以在 onEnterForeground 中检查一下
ScriptingCore::getInstance()->getGlobalContext()
如果 context 已经存在就可以调用,否则不可以调用
我在onEnterBackground设置了一个参数,可以判断了,然后调用成功了,非常感谢panda大神耐心细致的解答和帮助:)
解决了游戏内手动暂停后,切出切入的暂停问题。感谢panda和cocos团队。
另:1.3的不用判断是否js环境已经准备好了。