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);
我找不到从给定的 .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);