诸如其他的新加的功能可以写详细点么
比如 js 增加了下载任务······
可以把解压 压缩 下载 这些做成JSB接口吗? 虽然这些我们自己可以写,但是每次要修改引擎很麻烦呢~(为此我还停留在3.10)
顺带我还想问一句,lua的有没有
官网上lua的文档一直都是coming soon········
谢谢回复,不过我不是这个意思。 我的意思是解压和打包上传都是非常常用的功能(客户端,非WEB),可以考虑将这些功能作为工具类做在引擎里,方便使用,避免我们自己写修改引擎,导致升级麻烦。
能否出一个自动导出JSB继承NODE等(coco2dx核心类)的例子啊,一直用不来自动导出,全手工。。。
目测将转化一部分Eclipse用户为Android Studio用户
新建工程 proj.android编译失败,删除Application.mk中的APP_SHORT_COMMANDS := true就可以了,请确认!

报告一个一直存在的问题:
从cpp发送的自定义事件,如果带有userData,这个userData 在传递给JS端的时候会被抛弃。
换句话说就是:
JS端无法收到从CPP端发送过来的自定义事件的数据对象,
这个问题一直存在,从未被修复过,请问这次发布版本能否将这个问题修复一下?
@minggo @panda
下面是具体测试案例:

测试功能文件:
test315_custom_event_example.zip (52.5 KB)
测试代码预览:
CPP:
`EventCustom * event=new EventCustom(“custom_test”);
map<string,string> data;
data["text"]="I am from cpp";
event->setUserData(&data);
auto director = Director::getInstance();
// director->getEventDispatcher()->dispatchEvent(event); //the same as below, don’t work either.
director->getEventDispatcher()->dispatchCustomEvent("custom_test",&data);
return true;`
JS:
var _self=this;
_self.showLog("\n--------cpp custom event userdata is empty -------");
var listener = cc.EventListener.create({
event: cc.EventListener.CUSTOM,
eventName:“custom_test”,//event name is the same as cpp
callback: function (evt) {
_self.showLog(“Got custom event from cpp!”);
var msg = evt.getUserData();
if(msg==null){
_self.showLog("But user data is null...,Should print \"I am from cpp\"");
return;
}
_self.showLog("Wow! Got user data!!");
_self.showLog(msg.text);//Should print "I am from cpp";
}
});
cc.eventManager.addListener(listener, 2);
var node=new cc.Node();
_self.addChild(node);
_self.sendEvent();//send a custom event, set user data in cpp code.(JUST FOR SIMPLE TEST);
ccui.Scale9Sprite 这个类, 在js的导出接口中, initWithSpriteFrameName只支持两个参数, 以前是支持一个参数的。
bool js_cocos2dx_ui_Scale9Sprite_initWithSpriteFrameName(JSContext *cx, uint32_t argc, jsval *vp)
{
JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
bool ok = true;
JS::RootedObject obj(cx, args.thisv().toObjectOrNull());
js_proxy_t proxy = jsb_get_js_proxy(obj);
cocos2d::ui::Scale9Sprite cobj = (cocos2d::ui::Scale9Sprite *)(proxy ? proxy->ptr : NULL);
JSB_PRECONDITION2( cobj, cx, false, “js_cocos2dx_ui_Scale9Sprite_initWithSpriteFrameName : Invalid Native Object”);
if (argc == 2) {
std::string arg0;
cocos2d::Rect arg1;
ok &= jsval_to_std_string(cx, args.get(0), &arg0);
ok &= jsval_to_ccrect(cx, args.get(1), &arg1);
JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_ui_Scale9Sprite_initWithSpriteFrameName : Error processing arguments");
bool ret = cobj->initWithSpriteFrameName(arg0, arg1);
JS::RootedValue jsret(cx);
jsret = BOOLEAN_TO_JSVAL(ret);
args.rval().set(jsret);
return true;
}
JS_ReportError(cx, "js_cocos2dx_ui_Scale9Sprite_initWithSpriteFrameName : wrong number of arguments: %d, was expecting %d", argc, 2);
return false;
}
看绑定没有 argc == 1的情况, 建议加上
if (argc == 1) {
std::string arg0;
ok &= jsval_to_std_string(cx, args.get(0), &arg0);
JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_ui_Scale9Sprite_initWithSpriteFrameName : Error processing arguments");
bool ret = cobj->initWithSpriteFrameName(arg0);
JS::RootedValue jsret(cx);
jsret = BOOLEAN_TO_JSVAL(ret);
args.rval().set(jsret);
return true;
}
var label = ccui.Text(text, GFontDef.fontName, 20);
var oldSetString = label.setString.bind(label);
label.setString = function (str) {
console.log("xxxxxx")
oldSetString(str);
console.log("1111111")
.....
};
以前是可以这样的, 但现在
xxxxxx
JS: frameworks/runtime-src/proj.win32/Debug.win32/script/jsb_boot.js:1837:TypeError: ‘prototype’ property of fNOP is not an object
执行到oldSetString就出错了
现在要怎么写, 为什么这样的写法不被支持了?
var oldSetString = label.setString;
label.setString = function (str) {
oldSetString.apply(label, [str]);
};
换成这样是可以的。但为什么bind不行, 是不是bug, 还是使用不规范, 不被支持?
但有时候改别人代码, 需要一些功能, 不得不这样做啊
其实我想说的是3.14版本,mac平台,QT用cmake编译,AudioEngine播放音效,stop音效的时候会崩溃
3.15也不知道引擎组改了什么,这个崩溃被修复了。。
3.15 ,怎么样了。。。项目等着上线呢。。。人呢。
3.15的换了解码库
怎么没人做个回复啊


