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

时间:2015-03-07 16:03:06

标签: c++ cocos2d-x cocos2d-x-3.0

我找不到从给定的.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而不使用缓存中的精灵文件。

我只想放一个精灵而不是一个png。 Button课程运作良好,这是我实际问题的最佳解决方案。

3 个答案:

答案 0 :(得分:4)

您应该传递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);

答案 1 :(得分:0)

确定首先创建按钮之前,您需要确保加载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
}

我希望你能理解这一点,只需撰写评论。

答案 2 :(得分:0)

您可以使用' CCControlButton'

如:

// Creates a 9-slice sprite with an sprite frame name.
Scale9Sprite * img = Scale9Sprite::createWithSpriteFrame("hello.png");
Label * label = Label::create();
ControlButton * startBtn = ControlButton::create(label,img);
startBtn->setAdjustBackgroundImage(false);
addChild(startBtn);

我认为9片最好~~