2016-06-03 19 views
3

Mein Projekt benötigt so viele Schaltflächen. Aber für jede Taste ich machen, hat es alle Bilder zu laden, obwohl ich gleichen Tasten wie diese machen:Wie mache ich einen Sprite Button in cocos2d-x?

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

Ich denke, es ist sehr verschwenderisch in Bezug auf die Systemkosten. Ich möchte nur 1 texture2d * erstellen und beim Erstellen von Buttons verwenden. Ich habe viele Male mit dem Stichwort "cocos2d-x button texture ..." gesucht, aber es gibt keine Antwort, die ich finden könnte. Gibt es eine Methode, Textur beim Erstellen von Button zu verwenden, oder sollte ich eine von der Sprite-Klasse geerbte Klasse erstellen, die touchEventListner und Funktionsparameter enthält? wenn ja, wie kann ich anfangen Funktion zu erstellen Methode wie folgt zu verwenden:

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

nur ein kleines Beispiel für mich in Ordnung wäre.

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

Ich machte eine Singleton-Klasse und legte alle Buttons, und versuchte es zu verwenden, wenn es benötigt wird. Aber schlug fehl, da Knopf Autoreleased wird, wenn es erstellt wird, also wenn ich es verwenden, eine andere CPP, wie:

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

ein Fehler wie dies der Fall ist:

Expression : child->_parent == nullptr 

ich auf diese Weise gelingen kann durch behalten mit() & Release(), aber ich würde lieber auf sicherere Weise verwenden.

Antwort

1

Obwohl ich keine Erfahrung mit cocos2d habe, gehe ich davon aus, dass diese Textur nur einmal in den Speicher geladen wird, und verwende diese Informationen für alle Schaltflächen. Ist es nicht möglich, eine Schaltflächenklasse zu erstellen und dieselben Schaltflächen aus dieser Klasse zu übernehmen? Wieder habe ich keine Ahnung, wie cocos2d funktioniert, aber jede andere Spiel-Engine sollte das möglich sein :)

+0

Ich bin nicht sicher, dass es funktionieren wird, da ich in cocos2d-x sehr neu bin. Ich werde es bald versuchen. – dessert

+0

Ich habe es versucht und ist gescheitert ;-(aber danke für die Beratung sowieso – dessert

Verwandte Themen