首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

Cocos2d-x 系列七:用戶交互——觸摸、加速度、鍵盤事件處理

     編輯:C++ 入門

1. 多點觸摸(EventListenerTouchAllAtOnce)

一次性接收所有觸點,適合簡單手勢。

auto listener = EventListenerTouchAllAtOnce::create();
listener->onTouchesBegan = [](const vector&, Event*){ log("onTouchesBegan"); };
listener->onTouchesMoved = [](const vector& ts, Event*){ log("touch count %zu", ts.size()); };
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);

2. 單點觸摸傳遞(EventListenerTouchOneByOne)

逐個觸點處理,onTouchBegan 返回 true 表示繼續傳遞,false 停止後續事件。

auto listener = EventListenerTouchOneByOne::create();
listener->onTouchBegan = [](Touch* t, Event*){ log("onTouchBegan"); return true; };
listener->onTouchMoved = [](Touch* t, Event*){ log("onTouchMoved"); };
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);

3. 加速度傳感器

需先啟用 Device::setAccelerometerEnabled(true),再註冊監聽。

Device::setAccelerometerEnabled(true);
auto listener = EventListenerAcceleration::create([](Acceleration* a, Event*){
    log("x:%g y:%g z:%g", a->x, a->y, a->z);
});
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);

4. 鍵盤事件(主要用於 Android 返回鍵)

監聽 EventListenerKeyboard,處理 KEY_BACKSPACE 退出應用。

auto listener = EventListenerKeyboard::create();
listener->onKeyReleased = [](EventKeyboard::KeyCode code, Event*){
    if (code == EventKeyboard::KeyCode::KEY_BACKSPACE)
        Director::getInstance()->end();
};
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved