0

移動アクションを持つスプライトがあり、スプライトが移動アクションを終了するときに 3 つのパラメーターを持つ関数を呼び出したいのですが、使用しようとしましCC_CALLBACK_3CallFuncN が、パラメーターをどこに置くかわかりません。

4

1 に答える 1

3

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 の create 関数を見ると、次のようになります。

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

パラメータが 1 つだけの std::function を受け取ります。

したがって、CC_CALLBACK_1 を使用して、3 つ以上のパラメーターを持つ関数をメソッドに再バインドする必要があります。パラメーターは 1 つだけを受け入れ、唯一のパラメーターは Node* とそのサブタイプでなければなりません。

CallFuncN の例では、cocos2d-x エンジンはスプライトを最初の引数として 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)));

今回はcallfunc2メソッドの第一引数に「sprite」を渡します。

于 2014-12-29T02:18:59.630 に答える