1月24日下午3点至5点Cocos2d-x团队在线问答交流第九期~

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

每周五下午3点至5点Cocos2d-x团队核心成员将在CocoaChina上和大家做线上交流。

1月17日明天活动仍然按时举行,由Cocos2d-x团队技术总监吴昊来回答大家问题,有问题的童鞋可以在本贴中留言。

前八期的总结:
第一期:http://www.cocoachina.com/gamedev/gameengine/2013/1202/7455.html

第二期:http://www.cocoachina.com/gamedev/gameengine/2013/1210/7509.html

第三期:http://www.cocoachina.com/gamedev/gameengine/2013/1217/7555.html

第四期:http://www.cocoachina.com/bbs/read.php?tid=174668

第五期:http://www.cocoachina.com/bbs/read.php?tid=175781

第六期:http://www.cocoachina.com/bbs/read.php?tid=177813

第七期:http://www.cocoachina.com/bbs/read.php?tid=179599

第八期:http://www.cocoachina.com/bbs/read.php?tid=181270

占位留名~~~~~~~~~~~~~~~

占座······························································

:895:

占位留名。

我也来占个位

大家快发问题吧~~:7::7::7::7:

占位。。。。。。。。。。。。。。。。。。。。。。。

在3.0上最好有比tolua++更好的实现,最好干掉tolua.cast这种没用的东西
最好能有官方支持的lua调试工具,方便调试lua代码

我在运行 cocos2d 3.0 beta 里TestCpp – class – ExtensionsTest – CocoStudioGUITest 的 UITextFieldTest 测试用时。
【运行环境是 windows8 VS2012】
在windows环境下 没有显示 键盘输入框,但是可以接收键盘输入的字符, 但是按键盘上的退格键的也没有删除字符。
我想问的是 这个用例是不是 只能在手机环境下才会出现键盘然后通过手机上的键盘来删除输入的字符。

如果不是这种情况的话 那就我PC机的问题,多谢!

近期 在 骨骼上摆放粒子 ,但是 发现 粒子 在骨骼动画的 更新中是不支持 旋转的

void CCDisplayFactory::updateParticleDisplay(CCBone *bone, CCNode *display, float dt)
{
CCParticleSystem *system = (CCParticleSystem *)display;
CCBaseData node;
CCTransformHelp::matrixToNode(bone->nodeToArmatureTransform(), node);
system->setPosition(node.x, node.y);
system->setScaleX(node.scaleX);
system->setScaleY(node.scaleY);
system->update(dt);
}

只是 对 位置 大小 之类的进行 更新 而 骨骼动画 本身的更新 是 通过直接操作矩阵数据的
case CS_DISPLAY_SPRITE:
if (dirty)
{
((CCSkin*)display)->updateArmatureTransform();
}

额 本来想 自己通过矩阵算下 但是 这个 不晓得怎么算额 所以来请教下:3:

关于使用 replaceScene(scene)是否存在内存泄露的问题!

使用的版本:
cocos2d-x-2.2
cocos2d-x git 2013.11.4的代码仓
都发现了如果使用频繁切换场景调用

TransitionScene* createTransition(int nIndex, float t, Scene* s)
{
// fix bug #486, without setDepthTest(false), FlipX,Y will flickers
Director::getInstance()->setDepthTest(false);
//nIndex = 0;
switch(nIndex)
{
case 0: return CCTransitionProgressRadialCCW::create(t, s);
case 1: return CCTransitionProgressRadialCW::create(t, s);
case 2: return CCTransitionProgressHorizontal::create(t, s);
case 3: return CCTransitionProgressVertical::create(t, s);
case 4: return PageTransitionForward::create(t, s);
case 5: return PageTransitionBackward::create(t, s);
case 6: return FlipXLeftOver::create(t, s);
case 7: return FlipXRightOver::create(t, s);
case 8: return FlipYUpOver::create(t, s);
case 9: return FlipYDownOver::create(t, s);


s_nSceneIdx++;
s_nSceneIdx = s_nSceneIdx % MAX_LAYER;

auto s = new TransitionsScene();

auto layer = new Layer2();
s->addChild(layer);

auto scene = createTransition(s_nSceneIdx, TRANSITION_DURATION, s);
s->release();
layer->release();
if (scene)
{
    Director::getInstance()->replaceScene(scene);
}


在安卓机器上长时间跑,物理内存,虚拟内存增长。

我在WIN测试,VLD库检测没显示内存泄露,在切换场景replaceScene log输出发现系统强制回收内存!
我判断是在运行时内存泄露!

如果需要,我可以上传我部分源代码

频繁切换场景,试试调用TextureCache或者SpriteFrameCache清理下无用的内存。
也可以提供下demo,来看下具体是什么问题。

Cocos2d-x 3.0 beta 的 New Label 可以对中文进行显示,但是我在用Lua使用 New Label 的时候遇到了一个问题

-- 添加两个显示中文的标签到场景中
require 'Cocos2d'
StartupScene = {}

function StartupScene.create(self)
    local size = cc.Director:getInstance():getVisibleSize()
    local scene = cc.Scene:create()
    local layer = cc.Layer:create()
    scene:addChild(layer)

    local label1 = cc.Label:createWithTTF('一号', 'fonts/wqy-microhei.ttc', 24, size.width, cc.TEXT_ALIGNMENT_CENTER, cc.GLYPHCOLLECTION_CUSTOM, '一号')
    label1:setPosition(cc.p(200, 200))
    layer:addChild(label1)

    local label2 = cc.Label:createWithTTF('二号', 'fonts/wqy-microhei.ttc', 24, size.width, cc.TEXT_ALIGNMENT_CENTER, cc.GLYPHCOLLECTION_CUSTOM, '二号')
    label2:setPosition(cc.p(200, 100))
    layer:addChild(label2)

    return scene
end


```


运行之后只有“一号”可见,“二号”没有显示出来,而且在日志窗口中看到
cocos2d-x debug info 
cocos2d-x debug info 

大家有没有解决方法,谢谢
环境是Ubuntu 13.10 + Cocos2d-x 3.0beta

1 cocostuio编辑器对图片格式的支持只有png
现在实际项目开发中都会用到一些其他格式 比如 pvr pvr.czz etc1 希望能加入支持

2 希望cocostuio的导出方式支持自定义 目前导出的json 虽然可读性强 但是大小和加载速度是个问题 建议可以开放插件接口 让开发者自己编写

cocos2d-html5 2.2.2 版本的设置锚点有问题。 cocos2d-html5 2.2.1 版本是可以的, 我有demo。

demo 我提供很久了, 一直没有处理。

之前没注意到,抱歉。
demo可以发我邮箱吗?我们尽快处理,shujun.qiao@chukong-inc.com 。

3.0beta版本中,有一个动作相关的类Repeat,该动作更新函数void Repeat::update(float dt),定义如下:
void Repeat::update(float dt)
{
if (dt >= _nextDt)
{
while (dt > _nextDt && _total < _times)
{
_innerAction->update(1.0f);
_total++;
_innerAction->stop();
_innerAction->startWithTarget(_target);
_nextDt += _innerAction->getDuration()/_duration;
}

    // fix for issue #1288, incorrect end value of repeat
    if(dt >= 1.0f && _total < _times) 
    {
        _total++;
    }

    // don't set an instant action back or update it, it has no use because it has no duration
    if (!_actionInstant)
    {
        if (_total == _times)
        {
            _innerAction->update(1);
            _innerAction->stop();
        }
        else
        {
            // issue #390 prevent jerk, use right update                
            _innerAction->update(dt - (_nextDt - _innerAction->getDuration()/_duration));//------------>>>>>>不用看其它了,我指的就是这一条语句<<<<<<<<<<<<<<----------------------------//
        }
    }
}
else
{
    _innerAction->update(fmodf(dt * _times,1.0f));
}

}
上面有条语句(本人已在上面指出)看不明白,自感觉修改为
_innerAction->update(MIN((dt - (_nextDt - _innerAction->getDuration()/_duration))*_times,1));
比较合适。或者根本是我个人理解有问题,在此真诚地请教。

希望在html5版和jsb中加入音效是否播放完毕的判断,另外,在项目中,我发现如果音效的时长超过10秒以上,则用jsb版本在安卓和ios上会出现播放不完全的情况

win上是没有键盘弹出,手机上才有。
退格键,不起效,可能我刚在win8上,vs2012有测试,delete键是可以删除字符的。谢谢。