C/C++ C++ 11 兰姆达

 

{

    auto layer = Layer::create();
    auto event = cocos2d::EventListenerTouchOneByOne::create();
    event->onTouchBegan = [=](Touch*, Event*)->bool
    {
        this->createMSG("res/box/box_0.png", "res/btn/close_1.png", UTF_8("冬虫夏草app"));
#ifndef _WIN32
        Device::vibrate(5.0f);
#endif
        return true;
    };
    event->onTouchMoved = [=](Touch*, Event*)
    {

    };
    event->onTouchEnded = [=](Touch*, Event*)
    {

    };
    event->onTouchCancelled = [=](Touch*, Event*)
    {

    };
    


    auto listener = cocos2d::EventListenerKeyboard::create();
    listener->onKeyReleased = [=](EventKeyboard::KeyCode code,Event *e)
    {
        this->createMSG("res/box/box_0.png", "res/btn/close_1.png", UTF_8("冬虫夏草app ") + framework::tostring((int)code));
    };

    auto ed = layer->getEventDispatcher();
    ed->addEventListenerWithSceneGraphPriority(event, layer);
    ed->addEventListenerWithSceneGraphPriority(listener, layer);
    this->addChild(layer);

}

 

最好采用=传递

& 引用传递要好好考虑,有可能会破环某些栈内存

要这样[&a,&b] 这样最好,

{

如果是[&] 改变父级的内存 并不能保证会不会出错

尤其是堆内存这些

}

{

1.[var]表示值传递方式捕捉变量var;
2.[=]表示值传递方式捕捉所有父作用域的变量(包括this);
3.[&var]表示引用传递捕捉变量var;
4.[&]表示引用传递方式捕捉所有父作用域的变量(包括this);
5.[this]表示值传递方式捕捉当前的this指针。

}

posted @ 2019-12-16 11:05  YZFHKMS-X  阅读(226)  评论(0编辑  收藏  举报