2016-06-03 2 views
3

В моем проекте так много кнопок. Но для каждой кнопки я делаю, он должен загрузить каждые изображения, даже если я делаю те же кнопки, как это:Как сделать кнопку спрайта в cocos2d-x?

auto btn = cocos2d::ui::Button::create("images/bone01.png","images/bone02.png",""); 

Я думаю, что это очень расточительно в отношении стоимости системы. Я хочу сделать только 1 texture2d * и использовать его при создании кнопок. Я много раз искал ключевое слово, «текстура cocos2d-x ...», но ответа я не нашел. Есть ли какой-либо метод использования текстуры при создании Button, или я должен создать класс, унаследованный классом Sprite, который содержит параметры touchEventListner и функции? если да, то как я могу начать создавать функцию, чтобы использовать метод как это:

btn->addTouchEventListener(CC_CALLBACK_0(HelloWorld::touchBoard, this)); 

лишь небольшой пример будет хорошо для меня.

=================================

Я сделал одноэлементный класс и поместил все кнопки и попытался использовать его, когда это необходимо. Но не удался, потому что Баттон autoreleased, когда он будет создан, так что, если я использую это еще один касты, как:

auto appleBtn = DataClass::getInstance()->_appleBtn; 

ошибка происходит так:

Expression : child->_parent == nullptr 

я могу преуспеть в этом случае с помощью удержания() & release(), но я предпочел бы использовать более безопасный способ.

ответ

1

Хотя у меня нет опыта работы с cocos2d, я предполагаю, что он будет загружать эту текстуру в память только один раз и использовать эту информацию для всех кнопок. Разве не возможно сделать класс кнопки и унаследовать все те же кнопки из этого класса? Снова я не знаю, как работает cocos2d, но любой другой игровой движок это должно быть возможно :)

+0

Я не уверен, что это сработает, так как я очень новичок в cocos2d-x. Я попробую это скоро. – dessert

+0

Я попробовал и не смог ;-(но спасибо за совет в любом случае – dessert

Смежные вопросы