非常感谢 连上了 用的38版本的firefox 设置断点反应
麻烦问一下,升级1.62了,pomelo导入就报错了,有大神指导原因吗?
index.js:23 Uncaught TypeError: Cannot set property ‘EventEmitter’ of undefined
at __define (index.js:23)
at Object.func (index.js:37)
at Object.cc.require (modular.js:64)
at __require (GameManager.js:1)
at __define (GameManager.js:2)
at Object.func (GameManager.js:29)
at Object.run (modular.js:85)
at Object.onStart (boot.js:327)
at CCLoader. (CCGame.js:403)
at CCLoader.js:241
你1.7bugly怎么弄的?
没什么区别的,后面有时间我搞个分享
buglyAgent都得改,好多类型都改了
坐等bugly分享
直接用bugly 导出jsb js 就搞定了
没懂 啥意思? 讲讲呗
1.7 jsb 自动绑定 我做了 代码在公司 找时间分享出来
大侠 求分享!!
我发现了一个 cocos2d-x 3.15中的spidermonkey的虚拟机的一个关于arguments.length的bug, 明明我传入的是2个参数,结果取出argument.length为3。感觉这个都能出问题, spidermonkey到底靠不靠谱啊。这是逼着我放弃cocos2d-x吗?好不容易下定决心不纠结,用cocos2d-x。
你们有碰到过类似问题吗? creator 1.6.2 的spidermonkey不知道有没有此类问题。
还能有这种bug。。。
3.15中用的SpiderMonkey是从firefox33拔过来的,
你可以试试creator1.6,已经升级到firefox52的版本。
准备尝试中
最近把 1.6.2 beta3 里的 SpiderMonkey v52 手动移到了 cocos2d-x 3.12 中,现在有一点问题,借楼问一下:
求分享!!
安卓 模拟器 苹果
var xx= 0;
this.schedule(function(){
xx++;
cc.log(xx);
},0.001);
this.unscheduleAllCallbacks(); //无效呢
模拟器无法使用 d3dx9_39.dll、d3dx9_40.dll、d3dx9_41.dll、d3dx9_42.dll、d3dx9_43.dll、xinput1_3.dl
我这一会的功夫,就发现creator 1.6.2引擎的JSB绑定层两个BUG,反倒2dx里面没有。这…?
一个是下面的C++代码,回调函数没有把事件对象传入,JS::HandleValueArray::empty()应该是错误的
bool js_EventListenerCustom_create(JSContext *cx, uint32_t argc, JS::Value *vp)
{
JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
bool ok = true;
if (argc == 2) {
std::string arg0;
std::function<void (cocos2d::EventCustom *)> arg1;
JSFunctionWrapper *wrapper = nullptr;
ok &= jsval_to_std_string(cx, args.get(0), &arg0);
do {
if(JS_TypeOfValue(cx, args.get(1)) == JSTYPE_FUNCTION)
{
JS::RootedObject jstarget(cx, args.thisv().toObjectOrNull());
JS::RootedObject jsfunc(cx, args.get(1).toObjectOrNull());
std::shared_ptr<JSFunctionWrapper> func(new JSFunctionWrapper(cx, jstarget, jsfunc));
wrapper = func.get();
auto lambda = [=](EventCustom* event) -> void {
JS::RootedValue rval(cx);
bool succeed = func->invoke(JS::HandleValueArray::empty(), &rval);
if (!succeed && JS_IsExceptionPending(cx)) {
handlePendingException(cx);
}
};
arg1 = lambda;
}
else
{
arg1 = nullptr;
}
} while(0)
;
JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_EventListenerCustom_create : Error processing arguments");
auto ret = EventListenerCustom::create(arg0, arg1);
JS::RootedObject jslistener(cx);
js_get_or_create_jsobject<EventListenerCustom>(cx, ret, &jslistener);
JS::RootedValue jsret(cx, JS::ObjectOrNullValue(jslistener));
if (wrapper)
{
wrapper->setOwner(cx, jslistener);
}
args.rval().set(jsret);
return true;
}
JS_ReportErrorUTF8(cx, "js_cocos2dx_EventListenerCustom_create : wrong number of arguments");
return false;
}
另一个是如下的脚本代码, 后面的两个create需要加return吧:
cc.callFunc = function (selector, target, data) {
var callback = selector;
if (data !== undefined) {
callback = function (sender) {
selector.call(this, sender, data);
};
}
if (target !== undefined) {
cc.CallFunc.create(callback);
}
else {
cc.CallFunc.create(callback, target);
}
}
回答你cc.callFunc的问题:
你发现的确没错,lite仓库的cc.callFunc的确有问题。但是engine仓库已经又重新赋值了,所以没有产生问题。
见
https://github.com/cocos-creator/engine/blob/14c7194b2e9f07ed95c6ebccf6a6f71505235fa0/jsb/jsb-action.js#L247