【cocos2dx入門】「ラムダ式」と「コールバック関数」のまとめ。

【cocos2dx入門】「ラムダ式」と「コールバック関数」のまとめ。
   

cocos2dxのVer3.xで、大きく変わったのが「ラムダ式」と「コールバック関数」です。
特に「ラムダ式」に関しては、個人的にcocos2dではBlock関数として非常に便利に利用ができていたので、とても嬉しいです。
「メニュー」「タッチ処理」「アクション」で利用ができます。

ラムダ式

ラムダ式とは、以下のような構文です。


[] : キャプチャ

まずは見ていただきたいのが、最初に記載をされた「[]」です。
中身はキャプチャと呼ばれています。
このキャプチャには、ラムダ式で参照するオブジェクトを指定します。
  • [=] : 全てのオブジェクトのコピーがラムダ式に渡されます。
  • [&] : 全てのオブジェクトの参照がラムダ式に渡されます。
  • [obj] :objのコピーがラムダ式に渡されます。
  • [&obj]:objの参照がラムダ式に渡されます。

キャプチャは複数指定することもできます。

参照とコピー

参照とコピーについて。
参照はオブジェクトを変更することができます。


コピーはオブジェクトの値を変更できません。


() : 仮引数

これは省略が可能です。


戻り値

これは省略可能。


複合文

ラムダ式で行う処理を記述します。


コールバック関数

Ver3.xから、マクロで登録されたコールバック関数が登場します。
使い方は、指定したメソッドを呼び出すのですが、呼び出すメソッドの引数に応じて使い分けます。
ここの認識は間違っているかもしれません。
  • CC_CALLBACK_0
  • CC_CALLBACK_1
  • CC_CALLBACK_2

CC_CALLBACK_0

CC_CALLBACK_1


CC_CALLBACK_2



メニュー MenuItem

では具体的な例を記載します。
まずはMenuItemで利用する場合です。

Ver2.x


コールバック関数


ラムダ式


タッチ処理

タッチ処理で利用する場合です。
Ver2.x


コールバック関数


ラムダ式



アクション

Actionクラスの、CallFunc系で利用をします。

span style =”font-weight:700;”>Ver2.x


コールバック関数


ラムダ式



最後に

色々と触っているうちに、何となく「ラムダ式」と「コールバック関数」がどんなものかぼんやり見えてきました。
Xcodeは賢いので、もし間違っている時にはエラーがでます。
その場合には「CC_CALLBACK_0」の最後の数字を変えてみたり、ラムダ式ならキャプチャの指定がおかしくないかを調べながらやってみましょう。
とくにActionクラスで利用する際には、Ver2.xでは、とても面倒くさいと感じていましたので、表現の幅が広がりそうです。

C++ ポケットリファレンスC++ ポケットリファレンス
高橋 晶,安藤 敏彦,一戸 優介,楠田 真矢,道化師,湯朝 剛介

技術評論社
売り上げランキング : 48201

Amazonで詳しく見る


Related Posts Plugin for WordPress, Blogger...