美文网首页
SlateApplication中的事件处理一

SlateApplication中的事件处理一

作者: handBag | 来源:发表于2018-05-06 22:07 被阅读0次

    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
    传入的.调用这个函数的时机又是在引擎初始化的时候

    相关文章

      网友评论

          本文标题:SlateApplication中的事件处理一

          本文链接:https://www.haomeiwen.com/subject/reunlftx.html