cococos 2 dxソース分析:レイヤLayer
3434 ワード
Layerはノードから継承され、ノードとは異なり、touchイベント、Accelerationイベント、Keyイベントなどの外部入力を処理するインタフェースを有する.
これらのイベント機能を使用するには、Layerを継承し、対応する虚関数を実装するほか、対応するイベント処理関数をイベントリスナーに登録します.たとえば、次のようにします.
class CC_DLL Layer : public Node
{
。。。
public:
static Layer *create();
virtual bool onTouchBegan(Touch *touch, Event *unused_event);
virtual void onTouchMoved(Touch *touch, Event *unused_event);
virtual void onTouchEnded(Touch *touch, Event *unused_event);
virtual void onTouchCancelled(Touch *touch, Event *unused_event);
virtual void onTouchesBegan(const std::vector<Touch*>& touches, Event *unused_event);
virtual void onTouchesMoved(const std::vector<Touch*>& touches, Event *unused_event);
virtual void onTouchesEnded(const std::vector<Touch*>& touches, Event *unused_event);
virtual void onTouchesCancelled(const std::vector<Touch*>&touches, Event *unused_event);
virtual void onAcceleration(Acceleration* acc, Event* unused_event);
virtual void onKeyPressed(EventKeyboard::KeyCode keyCode, Event* event);
virtual void onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event);
。。。
};
これらのイベント機能を使用するには、Layerを継承し、対応する虚関数を実装するほか、対応するイベント処理関数をイベントリスナーに登録します.たとえば、次のようにします.
auto listener = EventListenerTouchAllAtOnce::create();
listener->onTouchesBegan = CC_CALLBACK_2(LayerTest1::onTouchesBegan, this);
listener->onTouchesMoved = CC_CALLBACK_2(LayerTest1::onTouchesMoved, this);
listener->onTouchesEnded = CC_CALLBACK_2(LayerTest1::onTouchesEnded, this);
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);