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

我在运行 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键是可以删除字符的。谢谢。

我把项目从2.2.1版本移植到3.0bata版,运行竟然报错
cocos2d: JS: /Users/haohuang/Library/Application Support/iPhone Simulator/7.0.3/Applications/DC9FB4F3-E6C6-451F-AC36-1B7749425744/ShaHai iOS.app/jsb_cocosbuilder.js:17:TypeError: cc._Reader is undefined
这是什么原因呀,难道3.0bata不能用ccbi做界面了?

感谢回复!纹理引用次数的问题,我都已经排除了!SpriteFrameCache,我没有使用到!
4个layer不停的切换
测试的部分源码

恩,播放结束回调这个已经加到issue里面了。
播放不完全,也会查看和修复。谢谢!

希望能尽快解决这个问题,否则我只能曲线救国,但是采用的办法效果很不好,希望尽快尽快

不是不能删除,而是没有写对应的事件处理。

CCtableView 怎么做翻页呢
翻页就是 如果屏幕可以显示4个Cell , 每次划动结束后就滚动4个Cell.
请大神提供思路。

sc->addRegisterCallback(register_all_cocos2dx_builder);
sc->addRegisterCallback(register_CCBuilderReader);
检查下代码 js函数注册有没有加上?
在appdelegete.cpp里面。

目前提供主要支持了png以及psd(这个最终还是会转成png), pvr pvr.czz etc1 后期会考虑添加支持的。

导出文件现在已经支持自定义了,可以选择格式化的json,也可以选择移除无用字符的json,未来会考虑添加二进制文件的导出格式来加快解析速度。