cocos2d-x如何使用外部实例?
正如在标题中提到的,我正在尝试使用一个函数之外的实例 Helloworld::init()中有一个spr sprite实例cocos2d-x如何使用外部实例?,cocos2d-x,Cocos2d X,正如在标题中提到的,我正在尝试使用一个函数之外的实例 Helloworld::init()中有一个spr sprite实例 我想在HelloWorld::menuCallback1(Ref*sender)中使用它 因此,单击菜单后,实例spr将旋转 请帮帮我 void HelloWorld::menuCallback1(Ref* sender) { auto item = (MenuItemFont*)sender; auto actionRotation = RotateBy
我想在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;
typedef std::函数ccMenuCallback;
所以它没有任何参数
但你还有两种方法可以实现这一目标:
1) 在.h文件中创建Sprite*spr实例
2) 使用item_1->setUserObject(spr)并使用item->getUserObject在menuCallback1函数中提取它。您还可以为cocos2d-x中的任何回调传递lambda:
[&](Ref* const ref){menuCallback1(ref);}