gpt4 book ai didi

ios - Sprite 完成 Action 时调用带有 3 个参数的函数

转载 作者:行者123 更新时间:2023-11-28 19:53:54 25 4
gpt4 key购买 nike

我有一个带有移动 Action 的 Sprite ,我想在 Sprite 完成移动 Action 时调用一个带有 3 个参数的函数,我尝试使用 CC_CALLBACK_3CallFuncN但我不知道我把参数放在哪里。

最佳答案

您不应使用 CC_CALLBACK_3,而应使用 CC_CALLBACK_1:

void callfunc1(Node* pSender, int i, int j, int k);
sprite->runAction(CallFuncN::create(CC_CALLBACK_1(HelloWorld::callfunc1, this,1,2,3)));

当您查看 CallFuncN 的创建函数时:

static CallFuncN * create(const std::function<void(Node*)>& func);

它接收一个只有一个参数的 std::function。

因此您应该使用 CC_CALLBACK_1 将具有 3 个或更多参数的函数重新绑定(bind)到只接受一个参数的方法,并且唯一的一个参数必须是 Node* 及其子类型。

在 CallFuncN 示例中,cocos2d-x 引擎会将 Sprite 作为第一个参数传递给 callfunc1 方法。所以你只需要关心传递剩余的参数。

顺便说一句,你不必使用 CallFuncN 和 CallFuncN 类限制你定义一个方法,其第一个参数必须是 Node* 及其子类型,你也可以使用 CallFunc,这是代码片段:

void callfunc2(Node* pSender, int i, int j);
sprite->runAction(CallFunc::create(CC_CALLBACK_0(HelloWorld::callfunc2, this,sprite,1,2)));

这一次,我们将“sprite”作为第一个参数传递给“callfunc2”方法。

关于ios - Sprite 完成 Action 时调用带有 3 个参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27666538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com