暂时不支持,creator自带cocos2d-js的升级版,js开发者直接转creator是不是更方便?
现在可以单独导出prefa吗,就是获得一个node或者layer
GitHub仓库没看到这样的支持,了解最新的开发内容可以 fork 仓库cocos2d/creator_to_cocos2dx, 关注 [minggo/creator_to_cocos2dx_cpp]((https://github.com/minggo/creator_to_cocos2dx_cpp/tree/master)
CreatorReader中createSprite出来的sprite,sprite->getBlendFunc() 得到的src=3435973836, dst=3435973836,如果赋值creator中的默认值770和771,发光的半透明区域会变黑,不赋值就是正常的。不懂原因呀。
代码中直接创建sprite,getBlendFunc的src=1, dst=771
最好写 16 进制或者是宏的名字,直接写 10 进制 看不出来是什么意思。另外,麻烦贴一些对应的代码片段。
cocos2d::Sprite* CreatorReader::createSprite(const buffers::Sprite* spriteBuffer) const
{
cocos2d::Sprite* sprite = cocos2d::Sprite::create();
if (sprite)
parseSprite(sprite, spriteBuffer);
return sprite;
}
void CreatorReader::parseSprite(cocos2d::Sprite* sprite, const buffers::Sprite* spriteBuffer) const
{
// order is important:
// 1st: set sprite frame
const auto& frameName = spriteBuffer->spriteFrameName();
if (frameName)
sprite->setSpriteFrame(frameName->str());
// 2nd: node properties
const auto& nodeBuffer = spriteBuffer->node();
parseNode(sprite, nodeBuffer);
// 3rd: sprite type
const auto& spriteType = spriteBuffer->spriteType();
switch (spriteType) {
case buffers::SpriteType_Simple:
sprite->setCenterRectNormalized(cocos2d::Rect(0,0,1,1));
break;
case buffers::SpriteType_Tiled:
tileSprite(sprite);
break;
case buffers::SpriteType_Filled:
case buffers::SpriteType_Sliced:
break;
}
cocos2d::BlendFunc spBlendFunc = sprite->getBlendFunc();**//这里是src=3435973836, dst=3435973836**
const auto& srcBlend = spriteBuffer->srcBlend(); **//这里是gl.SRC_ALPHA**
const auto& dstBlend = spriteBuffer->dstBlend();**//这里是gl.ONE_MINUS_SRC_ALPHA**
cocos2d::BlendFunc blendFunc;
blendFunc.src = srcBlend;
blendFunc.dst = dstBlend;
sprite->setBlendFunc(blendFunc);
#if 0
// FIXME: do something with these values
const auto& isTrimmed = spriteBuffer->trimEnabled();
const auto& sizeMode = spriteBuffer->sizeMode();
#endif
}
上面是CreatorReader.cpp中的
下面是lua中手动创建
local test = display.newSprite("#EF_dice_yxs_1.png"):addTo(self.m_scene):move(display.cx, display.cy)
dump(test:getBlendFunc(), “iffffffffffffff”)
结果是:
[LUA-print] - "iffffffffffffff" = {
[LUA-print] - "dst" = 771
[LUA-print] - "src" = 1
[LUA-print] - }
你是在哪里赋值的?为什么要这样赋值?
creator直接拖一张图片到Canvas就是默认GL_SRC_ALPHA和GL_ONE_MINUS_SRC_ALPHA
如果我赋值成GL_ONE和GL_ONE_MINUS_SRC_ALPHA,半透明区域正常,但是透明度渐变的时候会曝光,透明度变为0的时候还是可见的,只是曝光极限了
只有用creator创建的sprite存在这种现象,手动cc.Sprite:createWithSpriteFrameName并没有这种现象
能给一下你的 creator 工程和对应的 cocos2d-x 工程吗(cocos2d-x 的工程只需要 Classes 下的文件)?我怀疑是 alpha 预乘带来的问题。
好的,怎么发给你?
lua工程,不加载creator文件多分辨率是正常的,加载了creator的文件后多分辨率就有黑边或者超出屏幕,查看classes里面,CreatorReader::setup()为什么又设置了一遍分辨率?
私信给我吧。
Creator 会设置与分辨率相关的内容,所以 reader 会根据解析出来的内容设置分辨率适配以达到和 creator 一样的效果。
私信你了~
想问下,widget自动布局为什么不起作用?我想让一个ui里面的几个控件全部显示在屏幕内,所以给这几个控件挂在了widget组件,并设置了相对位置,但是运行时,我改变分辨率,并重新设置了这些控件的父节点的contentsize和屏幕尺寸一样,还是会有一些控件在屏幕外,看不到?是我哪里操作不对吗?
minggo你好,我们正在使用你的插件到实际项目,请予以协助(暂时遇到“需要导出资源到相对路径”等,另不知道如何发私信,抱歉)谢谢~~
发邮件给我吧:xiaoming.zhang@chukong-inc.com
README 里有说明了,布局目前不支持运行时动态调整。