SlateApplication中的事件处理一

2018-05-06  本文已影响0人  handBag

1 FSlateApplication是继承自FGenericApplicationMessageHandler接口,添加事件处理的能的

今天第一节就写一下他是自己注入到系统里的.以android为例
输入的核心是在AndroidInputInterface文件 里

for(int i = 0; i < FAndroidInputInterface::TouchInputStack.Num(); ++i)
    {
        TouchInput Touch = FAndroidInputInterface::TouchInputStack[i];
        int32 ControllerId = FindExistingDevice(Touch.DeviceId);
        ControllerId = (ControllerId == -1) ? 0 : ControllerId;

        // send input to handler
        switch ( Touch.Type )
        {
        case TouchBegan:
            MessageHandler->OnTouchStarted(nullptr, Touch.Position, Touch.Handle, ControllerId);
            break;
        case TouchEnded:
            MessageHandler->OnTouchEnded(Touch.Position, Touch.Handle, ControllerId);
            break;
        case TouchMoved:
            MessageHandler->OnTouchMoved(Touch.Position, Touch.Handle, ControllerId);
            break;
        }
    }

当Android收到touch事件后,通过一系列操作,会转到到这处来执行.这个时候 ,MessageHandler已经实例化成FSlateApplication了

代码里MessageHandler的类型就是FGenericApplicationMessageHandler类型
而messageHandler是在下面的函数里
FAndroidInputInterface::SetMessageHandler
传入的.调用这个函数的时机又是在引擎初始化的时候

上一篇下一篇

猜你喜欢

热点阅读