11月29日今天下午3点至5点Cocos2d-x作者王哲将在本贴中和大家做面对面交流~

虽然我叫MT、大掌门、神仙道、捕鱼达人等多款明星游戏均使用Cocos2d-x进行开发,但引擎团队深知还有许多不足之处。为更好地服务全国各地的开发者朋友,Cocos团队特别开设定期线上技术支持!

今天下午三点至五点王哲将在本贴中和大家做线上交流~在线解答Cocos2d-x/Cocos2d-html5/CocoStudio技术难题,吸取意见建议,交流开发技巧。

技术相关,有问必答!

2dx 声音库中,设置背景音乐(background music)音量的方法在android上测试不起作用啊,是没有实现该功能吗?还是bug?
ps:音效(effect)的音量是可以设置成功的

我想问一下在cocos2dx中用什么实现线程间的通信比较好呢?就拿主线程和负责socket的子线程来说吧,socket拿到数据后要交给主线程更新UI,主线程的某些操作产生的数据交给子线程让socket去发送。。刚开始我用的《捕鱼达人》这本书中扩展的那个线程安全的MTNotificationCenter,子线程给主线程发消息ok,但是貌似主线程不能给子线程发消息,因为addObserver的时候要传递一个this指针,但是在static方法中没用this指针(多线程使用pthread实现的)。。后来改用msg,不过这个跨平台就不方便了,好像安卓上禁用了这个方法。。最后改用STL存储数据,然后给他加锁,用一个while循环来读数据,有就读出来。。不知道有没有更好的方法来实现线程间的消息传递?

还有一个是editBox的显示问题,在scrollView中加入editBox,滑动scrollview后,再触摸editBox打开键盘,文本输入的位置不在editBox当前的位置,而是在editBox初始化时的位置,键盘关闭后才显示到editBox的当前位置上去。。

*友情搬运一个问题,来自@swtlovewtt:
*
哎,我现在好想提高自己的编程技术,能给指条路吗?
为啥有的人就那么牛,会各种技术,狂拽酷炫吊炸天的,
我这种屌丝程序员找工作就是一些基本UI什么的,不甘心

我以前是用动作回调的方法实现的,3.0会有一个较好的方法

我用cocos2dx2.2.0 + cocostudio1.0.2.0,进行CCArmature:setScale(0.5)进行缩放之后,一播动作就出现变形,只有Y轴缩小,X轴没有缩,这是bug吗?

请问一个问题:
平时编程很少用到大学里面学的数学知识 比如 微积分 复变函数 傅立叶变换 离散数学 线性代数 什么的
设计这个2dx你们用到那些数学知识?

我想问一下关于开发语言的选择问题。我使用cocos2dx不久,从html5入手的。cocos2dx jsb是一个很吸引我的特性,它使得在开发者在前期可以利用浏览器进行便捷的开发/调试,并在后期方便的移植到android/ios平台。
但是经过一段时间的使用,我发现html5和jsb或多或少有些不一致的地方,比如API的细微差别,有些功能没有binding到javascript等。
我想问一下,抛开对语言本身熟悉程度的差别,cocos2dx C++/Lua/Javascript哪一个是更好的选择呢?

为什么不把CCNode的setUserObject设计成(id, value)的形式?
现在这样,看上去很有弹性可以设置任何类型,可某个库在底层占用后(比如cc3.0的jsb),其它程序则没法使用。这个api就感觉不敢用,怕被坑或者坑人。弹性变成了束缚,不如用id。这样只要保证id不重复就可以放心使用了。即使id冲突了,只需简单换个id就可以了,不用担心既有程序的实现。

请问localStorage在android和ios上是用什么实现的?其安全性是否有保障(是否易被篡改),还是说开发者需要在自己加入加密/解密逻辑?

请问,是否可以使用assetsmanager来在线更新/添加jsc文件?如果可以的话,用这种方式来做更新岂不是很方便?

你好
我们现在在使用coco2dx-wp8, 多谢cocos2dx现在demo已经正常了, 但是现在卡住了, 由于我们是用c++ 和 D3D写的, 现在没有办法调用c#的代码, 也就无法使用push notification, 集成第三方sdk(比如facebook). coco2dx-wp8是打算支持c++调c#的对吗? 这个功能大概什么时候可以放出呢?
多谢

这个我知道,localStorage存的是sqlite,很容易就被改掉,所以需要自己加密。

王哲大神还没到吗?

大叔,又见面了

能具体说下么?

— Begin quote from ____

引用第1楼nickytzw于2013-11-29 11:14发表的 :
2dx 声音库中,设置背景音乐(background music)音量的方法在android上测试不起作用啊,是没有实现该功能吗?还是bug?
ps:音效(effect)的音量是可以设置成功的 http://www.cocoachina.com/bbs/job.php?action=topost&tid=169745&pid=855531

— End quote

我刚编译了一下develope分支最新代码,在我Nexus 3上声音运行正确的。其实我们每次发版本之前都有做回归测试的。
你用的引擎版本、手机型号、设备背景音乐的代码贴一下。

就是用一个动作回调队列,收到一个消息,放到一个function里,然后主线程再调用这个function队列

— Begin quote from ____

引用第2楼同心圆于2013-11-29 11:32发表的 :
我想问一下在cocos2dx中用什么实现线程间的通信比较好呢?就拿主线程和负责socket的子线程来说吧,socket拿到数据后要交给主线程更新UI,主线程的某些操作产生的数据交给子线程让socket去发送。。刚开始我用的《捕鱼达人》这本书中扩展的那个线程安全的MTNotificationCenter,子线程给主线程发消息ok,但是貌似主线程不能给子线程发消息,因为addObserver的时候要传递一个this指针,但是在static方法中没用this指针(多线程使用pthread实现的)。。后来改用msg,不过这个跨平台就不方便了,好像安卓上禁用了这个方法。。最后改用STL存储数据,然后给他加锁,用一个while循环来读数据,有就读出来。。不知道有没有更好的方法来实现线程间的消息传递?

还有一个是editBox的显示问题,在scrollView中加入editBox,滑动scrollview后,再触摸editBox打开键盘,文本输入的位置不在editBox当前的位置,而是在editBox初始化时的位置,键盘关闭后才显示到editBox的当前位置上去。。


http://www.cocoachina.com/bbs/job.php?action=topost&tid=169745&pid=855542

— End quote

多线程方面的消息传递方面,目前cocos没有封装这块。你可以参考标准的“生产者-消费者模型”来实现。网上可以搜到很多实现。另外,我在2.x版本里面的写的 https://github.com/cocos2d/cocos2d-x/blob/master/extensions/network/HttpClient.cpp 这个也可以参考一下,没有做很纯粹的封装,不过用 CCArray 做了两个队列,在网络和UI线程里面分别用 pthread_mutex_lock/unlock 加锁解锁。

EditBox是分平台实现的,你需要说描述一下平台、平台版本、机型、出问题的输入法(比如三星S4,安卓4.0,百度输入法 这样)。

论坛好卡啊,都难以回帖、、难道是我破北京联通的问题?