rabbit-dev

現役スマフォプログラマーが適当にプログラム関係の記事を放り込むブログ

CallFuncNにパラメータをつける→ラムダ式を使おう

記事が間違えていたため修正しました。

 

CallFuncNにパラメータをつけたい場合、以前まではCallFuncNDが使えていたようですが、このクラスは非推奨みたいです。現在何が推奨されているか分かりませんが、ラムダ式を使うことでパラメータを渡すことが出来たのでやり方をのせておきます。

 

コード

void testGame::func1(int num){

 CallFuncN * callfunc = CallFuncN::create([num](Ref * obj){
  testGame * target = (testGame *)obj;

  target->func2(num);

 });

 Sequence * seq = Sequence::create(DelayTime::create(1.5f), callfunc, NULL);
 this->runAction(seq);
}

 

void testGame::func2(int num){

 mScore = mScore + num;

}

 

これでいけます。

ラムダ式の詳細については省きます。下のサイトを読めばOKかと

http://albatrus.com/main/cocos2d/6215

 

重要な部分だけ

numを値渡しにしています。ここを参照渡しにするとおそらく動きません。(不定値になると思われます。)

このラムダ式が呼ばれるときはfunc1の関数実行は終わっているためです。そのため、値渡しにする必要があります。