cocos2d-x如何使用外部实例?
cocos2d-x How To Use External Instances?
正如标题所说,我正在尝试使用一个超出其功能的实例。
Helloworld::init()
中有一个spr精灵实例
我想在 HelloWorld::menuCallback1(Ref* sender) 中使用它
所以一旦点击菜单,实例spr就会旋转。
请帮帮我!!!
void HelloWorld::menuCallback1(Ref* sender) {
auto item = (MenuItemFont*)sender;
auto actionRotation = RotateBy::create(3.0, 1080);
spr->runAction(actionRotation);
}
bool HelloWorld::init() {
if (!Layer::init()) return false;
Size winSize = Director::getInstance()->getWinSize();
auto spr = Sprite::create("ch.png");
spr->setPosition(Point(winSize.width / 2, 70));
spr->setAnchorPoint(Point(0.5, 0));
this->addChild(spr);
// 메뉴(Menu)
auto item_1 = MenuItemFont::create("MOVE UP RIGHT", CC_CALLBACK_0(HelloWorld::menuCallback1, this));
auto menu = Menu::create(item_1, NULL);
menu->alignItemsVertically();
this->addChild(menu);
return true;
}
根据文档 menuCallback 看起来像这样:
typedef std::function<void(Ref*)> ccMenuCallback;
所以它没有任何参数。
但是您还有 2 种其他方法可以实现:
1) 在.h文件中制作Sprite* spr实例,
2) 使用 item_1->setUserObject(spr) 并使用 item->getUserObject.
在 menuCallback1 函数中提取它
您还可以为 cocos2d-x 中的任何回调传递 lambda:
[&](Ref* const ref){menuCallback1(ref);}
正如标题所说,我正在尝试使用一个超出其功能的实例。
Helloworld::init()
中有一个spr精灵实例
我想在 HelloWorld::menuCallback1(Ref* sender) 中使用它
所以一旦点击菜单,实例spr就会旋转。
请帮帮我!!!
void HelloWorld::menuCallback1(Ref* sender) {
auto item = (MenuItemFont*)sender;
auto actionRotation = RotateBy::create(3.0, 1080);
spr->runAction(actionRotation);
}
bool HelloWorld::init() {
if (!Layer::init()) return false;
Size winSize = Director::getInstance()->getWinSize();
auto spr = Sprite::create("ch.png");
spr->setPosition(Point(winSize.width / 2, 70));
spr->setAnchorPoint(Point(0.5, 0));
this->addChild(spr);
// 메뉴(Menu)
auto item_1 = MenuItemFont::create("MOVE UP RIGHT", CC_CALLBACK_0(HelloWorld::menuCallback1, this));
auto menu = Menu::create(item_1, NULL);
menu->alignItemsVertically();
this->addChild(menu);
return true;
}
根据文档 menuCallback 看起来像这样:
typedef std::function<void(Ref*)> ccMenuCallback;
所以它没有任何参数。
但是您还有 2 种其他方法可以实现:
1) 在.h文件中制作Sprite* spr实例,
2) 使用 item_1->setUserObject(spr) 并使用 item->getUserObject.
在 menuCallback1 函数中提取它您还可以为 cocos2d-x 中的任何回调传递 lambda:
[&](Ref* const ref){menuCallback1(ref);}