cocos2d- x3将精灵添加到布局中

cocos2d-x 3 add a Sprite into a Layout

本文关键字:布局 添加 精灵 x3 cocos2d-      更新时间:2023-10-16

当我这样做的时候,它工作了:

Layout* layout = Layout::create();
layout->setLayoutType(Layout::Type::HORIZONTAL);
layout->setContentSize(Size(280, 150));
layout->setPosition(Vec2(visibleOrigin.x + 100, visibleOrigin.y + visibleSize.height - 100));
addChild(layout);
auto jacket = Button::create("jacket.png", "jacket.png", "jacket.png", Widget::TextureResType::PLIST);
layout->addChild(jacket);

但是当我这样做时(添加一个精灵而不是上面代码中添加的按钮):

Layout* layout = Layout::create();
layout->setLayoutType(Layout::Type::HORIZONTAL);
layout->setContentSize(Size(280, 150));
layout->setPosition(Vec2(visibleOrigin.x + 100, visibleOrigin.y + visibleSize.height - 100));
addChild(layout);
auto jacket = Sprite::createWithSpriteFrameName("jacket.png");
layout->addChild(jacket);

然后我在layout->addChild(jacket);上得到断言失败,消息是Expression: vector subscript out of range。我想布局中不支持精灵吧?那么,在布局中添加图像的正确方法是什么呢?我应该像下面这样使用ImageView吗?

auto jacket = ImageView::create("jacket.png",TextureResType::PLIST);
layout->addChild(jacket);

如果是,为什么?SpriteImage有什么区别?

如果我理解正确的话,按钮将尝试加载名为"jacket.png"的单独文件,而createWithSpriteFrameName初始化器将尝试从先前加载的纹理图集

中获取jacket.png帧

这个问题可能很简单,比如夹克图像不在纹理图集中,或者在运行这段代码之前没有加载图集(帧)