Cocos2dx 3.x 按钮精灵 [C++]

Cocos2dx 3.x button sprite [C++]

我找不到从给定的 .plist 文件而不是普通纹理加载按钮图像的方法。 使用

Button::create("normal_image.png", "selected_image.png", "disabled_image.png");
//or
button->loadTextures("normal_image.png", "selected_image.png", "disabled_image.png");

搜索 png 并且不使用缓存中的 sprite 文件。

我只想放一个 sprite 而不是 png。 Button class 运行良好,它是解决我的实际问题的最佳解决方案。

好的,在创建按钮之前,首先您需要确保加载 plist,否则它将无法工作。好的,现在让我们创建一个简单的按钮。

让我们加载 plist 文件。

"AppDelegate.cpp"
SpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("yourSprites.plist");


"PauseLayer.h"
 #ifndef LEVELCHOOSER_H_
 #define LEVELCHOOSER_H_

 #include "cocos2d.h"
 #include "Popup.h"

 using namespace cocos2d;

 class LevelChooser:public cocos2d::Layer
{
Size s;
Popup *popup;
cocos2d::MenuItemSprite *pauseButton;
public:
virtual bool init();
virtual void showPopup(cocos2d::Ref* pSender);
virtual void closePopup(cocos2d::Ref* pSender);
virtual void playGame(cocos2d::Ref* pSender);
virtual void playTimeGame(cocos2d::Ref* pSender);
CREATE_FUNC(LevelChooser);
};

#endif /* LEVELCHOOSER_H_ */

然后加载按钮。 在源文件中。

    "LevelChooser.cpp"
bool LevelChoser()
{
 Size s = Director::getInstance->getWinSize();
 pauseButton = MenuItemSprite::create(
        Sprite::createWithSpriteFrameName("ButtonPauseNormal.png"), "ButtonPauseActive.png", this,
        menu_selector(LevelChooser::showPopup));
 pauseButton->setPosition(s.width/2,s.heigh/2);
 return true;
}
void LevelChooser::showPopup(cocos2d::Ref* pSender)
{
//do Something
}

我希望你能理解这一点,有什么就写评论。

您应该传递一个 TextureResType

Button::create("normal_image.png", "selected_image.png", "disabled_image.png", TextureResType::PLIST);

button->loadTextures("normal_image.png", "selected_image.png", "disabled_image.png", TextureResType::PLIST);