Cocos Creator v2.1.3 测试版发布帖(正式版已发)

老铁们,安卓java里回掉js的方法不能用了吗,Cocos2dxJavascriptJavaBridge.evalString("");这句话放哪app都闪退,是我姿势错了吗?

public class AppActivity extends Cocos2dxActivity {
    private static AppActivity app = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Workaround in
        // https://stackoverflow.com/questions/16283079/re-launch-of-activity-on-home-button-but-only-the-first-time/16447508
        if (!isTaskRoot()) {
            // Android launched another instance of the root activity into an existing task
            // so just quietly finish and go away, dropping the user back into the activity
            // at the top of the stack (ie: the last state of this task)
            // Don't need to finish it again since it's finished in super.onCreate .
            return;
        }
        app = this;
        // DO OTHER INITIALIZATION BELOW
        SDKWrapper.getInstance().init(this);
        TimerTask task = new TimerTask() {
            public void run() {
                Log.d("cn.test", "@@@@@@@@@@@@@ test #############################");
                Cocos2dxJavascriptJavaBridge.evalString("cc.log('@@@@@@@@@@@@@ test #############################')");
                //callString("cc.log('@@@@@@@@@@@@@ test #############################')");
            }
        };
        Timer timer = new Timer();
        timer.schedule(task, 1000, 2000);
    }
    public static void callString(final String str){
        app.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Cocos2dxJavascriptJavaBridge.evalString(str);
            }
        });
    }
}

creator 版本 2.1.3rc7,新建工程,发布default版,未做任何改动,只改动了AppActivity里的上面一点。

中文不应该用 char 模式的,重复率太低了,收益不大。

app.runOnUiThread下的Runnable是在Android 的主UI线程,你应该且必须把这个js调用切换回OpenGL线程执行。

import static org.cocos2dx.lib.Cocos2dxHelper.runOnGLThread;

    runOnGLThread(new Runnable() {
      @Override
      public void run() {
        String _safeStr = String.format("ezplugin.nativeCallbackErrorHandler('%d','%s');",callbackId,params);
        Cocos2dxJavascriptJavaBridge.evalString(_safeStr);
      }
    });

iOS下面一般不需要切换,因为OpenGL就是在iOS UI主线程中启动,当然如果你用到NSURLSession之类的网络操作你还是需要动手切换回来

    dispatch_async(dispatch_get_main_queue(), ^{
        NSString *str = [NSString stringWithFormat:@"ezplugin.nativeCallbackErrorHandler('%d','%@');",callId,params];
        se::ScriptEngine::getInstance()->evalString([str UTF8String]);
    });

convertToNodeSpace 废弃了?convertToWorldSpaceAR 怎么返回的是 Vec3 ,前面的版本还是 Vec2 来着

暂时的办法是自己把 .d 文件改了 … 不然游戏涉及 Vec2 计算都要改了

1赞

Vec3 用法和 Vec2 一样鸭,好吧,ts 的类型转换确实是个坑。

报个一直以来的问题,不知道算不算 BUG

Canvas 绑定的组件 onLoad start 方法内获取 用了 Widget 布局的组件的坐标是不准确的,需要下一帧取才是真实的自适应后的坐标,有点蛋疼,目前解决方案只能放下一帧去取这种使用了布局组件节点的坐标了

我看控制台打印的 pos 都是 Vec3 类型,本来想干脆都使用 Vec3 算了,但发现 node.position 返回的是 Vec2 , 瞬间觉得还是不改了····

嗯…… 不知道怎么改比较好,如果 position 也改 Vec3,论坛估计会炸了

摘录一下 API 文档里的内容

Widget 组件,用于设置和适配其相对于父节点的边距,Widget 通常被用于 UI 界面,也可以用于其他地方。 Widget 会自动调整当前节点的坐标和宽高,不过目前调整后的结果要到下一帧才能在脚本里获取到,除非你先手动调用 updateAlignment

哥们,你确定回调在runOnGLThread里就行了吗,我怕是又踩了一个坑。在OpenGL线程里执行是不会报错了,但是执行语句是失败的,完全没有任何效果

// 一定要在 GL 线程中执行
app.runOnGLThread(new Runnable() {
    @Override
    public void run() {
        Cocos2dxJavascriptJavaBridge.evalString("cc.log(\"Javascript Java bridge!\")");
      Cocos2dxJavascriptJavaBridge.evalString("cc.find('Canvas').active = false;");
    }
});

不管在哪调用,不会有打印,屏幕也不会黑

666 原来是这样,我功课没做好:stuck_out_tongue_closed_eyes:

runOnGLThread 搜下论坛

2.1.3版本发现个bug,纹理已经设置为repeat 但是没有作用

rc.7 发布facebook instant game 版本打开黑屏,正常web时不会出问题的,异常信息如下:
cocos2d-js-min.js:1 TypeError: Cannot read property ‘_owner’ of undefined
at Function.getInstantiatedMaterial (cocos2d-js-min.js:1)
at Function.getInstantiatedBuiltinMaterial (cocos2d-js-min.js:1)
at CCClass._activateMaterial (cocos2d-js-min.js:1)
at CCClass._applySpriteSize (cocos2d-js-min.js:1)
at CCClass._onTextureLoaded (cocos2d-js-min.js:1)
at CCClass._applySpriteFrame (cocos2d-js-min.js:1)
at CCClass.set [as spriteFrame] (cocos2d-js-min.js:1)
at CCClass.onLoad (project.js:formatted:3219)
at eval (eval at f (cocos2d-js-min.js:1), :3:65)
at CCClass._invoke (cocos2d-js-min.js:1)
at CCClass.invoke (cocos2d-js-min.js:1)
at CCClass.activateNode (cocos2d-js-min.js:1)
at CCClass._activate (cocos2d-js-min.js:1)
at 28.cc.Director.runSceneImmediate (cocos2d-js-min.js:1)
at cocos2d-js-min.js:1
at y. (cocos2d-js-min.js:1)
at cocos2d-js-min.js:1
at cocos2d-js-min.js:1
27.cc._throw @ cocos2d-js-min.js:1

hello world 项目也会吗?

hello world没测试,我是从2.0.10升级上来的~

2.0.10是正常的

感谢各位的热心反馈,2.1.3 已经准备发布。由于时间及节奏问题,未能完美解决所有问题,剩余问题我们会在后续版本中继续跟进。如有疑问欢迎重新发贴反馈!谢!谢!

你好,从你贴出的报错来看,貌似是内置材质资源找不到。请确认下这两个模块是否勾选