我的项目需要这么多按钮。但是对于我制作的每个按钮,它必须加载每个图像,即使我像这样制作相同的按钮:
auto btn = cocos2d::ui::Button::create("images/bone01.png","images/bone02.png","");
我认为在系统成本方面非常浪费。我想只制作1个texture2d *并在制作按钮时使用它。我用关键字' cocos2d-x按钮纹理搜索了很多次...'但我找不到答案。是否有任何方法在创建Button时使用纹理,或者我应该创建一个由包含touchEventListner和函数参数的Sprite类继承的类?如果是这样,我怎么能开始创建函数来使用这样的方法:
btn->addTouchEventListener(CC_CALLBACK_0(HelloWorld::touchBoard, this));
只是一个小例子对我来说没问题。
=============================================
我制作了一个单独的类并放置所有按钮,并在需要时尝试使用它。但失败是因为Button在创建时自动释放,所以如果我使用另一个cpp,比如:
auto appleBtn = DataClass::getInstance()->_appleBtn;
发生如下错误:
Expression : child->_parent == nullptr
我可以通过使用retain()& release(),但我宁愿使用更安全的方式。
答案 0 :(得分:1)
虽然我对cocos2d没有任何经验,但我认为它只会在内存中加载一次纹理,并将此信息用于所有按钮。是不是可以创建一个按钮类并从该类继承所有相同的按钮?我再也不知道cocos2d是如何工作的,但任何其他游戏引擎都应该可行:)