cocos2dx3.xにてスワイプでSprite画像を切り替えたいのですが
「this cannot implicitly captured in this context」とエラーが発生してしまいます。エラーの解決策または実現方法をご教示いただきたい次第です。以下抜粋したコードです。
class GameScene :public cocos2d::Layer
{
protected:
GameScene();
virtual ~GameScene();
bool init() override;
public:
static cocos2d::Scene* createScene();
CC_SYNTHESIZE_RETAIN(cocos2d::Sprite *, Bamen, Bamen);
void replace(cocos2d::Sprite *sprite, const char *imageFileName);
CREATE_FUNC(GameScene);
};
GameScene.cpp
#include "GameScene.h"
#include "EventListenerGesture.h"
bool GameScene::init()
{
if (!Layer::init()) {
return false;
}
Bamen=Sprite::create("N_all_2.png");
Bamen->setPosition(Vec2(getwinSize()/2,getbamen_h()));
this->addChild(Bamen);
auto listener = EventListenerGesture::create();
listener->setLongTapThreshouldSeconds(1.0f);
listener->setSwipeThreshouldDistance(150.0f);
listener->onSwipe = [](EventListenerGesture::SwipeDirection direction)
{
switch (direction) {
case EventListenerGesture::SwipeDirection::RIGHT:
this->replace(Bamen, "N_all_1.png");//ここでエラー
break;
case EventListenerGesture::SwipeDirection::LEFT:break;
default:break;
}
};
getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);
return true;
}
void GameScene::replace(Sprite *sprite, const char *imageFileName) {
sprite->setTexture( Director::getInstance()->getTextureCache()->addImage(imageFileName) );
Texture2D *tex = Director::getInstance()->getTextureCache()->addImage(imageFileName);
sprite->setTexture(tex);
Size contentSize = tex->getContentSize();
sprite->setTextureRect(Rect(0, 0, contentSize.width, contentSize.height));
}
参考にさせていただいたURL
Swipe:https://github.com/poowww/EventListenerGesture
//上記のヘッダー、cppファイルをコピーして使用させていただいております。
Sprite切替:http://d.hatena.ne.jp/nkawamura/20150514/1431615967