zoukankan      html  css  js  c++  java
  • 开发体会

    以后遇到的问题,尽量总结了记下来。免得犯同一个错误...

    P.1
    在不能cancel某个具体消息的消息管理器里,如何验证收到的某个消息是否有效?
    该消息可能不断出现,但后一个的出现立即使得前一个失效。
    比如:某玩家进入危险区域一定连续时间后将触发一个事件(如减血);篮球三秒违例。
    一旦玩家离开区域,这个事件将失效。如果可以在消息管理器内找到这个消息并删除,问题就解决了。
    假设不能cancel这个消息。那么可以用下面的方法来解决该问题:
    对自发自收的情况,可以用一个循环自增的量做验证:
    int EventStamp; // 事件戳
    发生改事件时发送一个更新过的事件戳:
    SendEvent(new Event(++EventStamp));
    在收到事件的时候,如果不符合当前事件戳,就可以忽略掉。
    if (Event.mEventStamp == EventStamp)
    {
        // 处理该事件
    }
    例如:玩家进入危险区,发送了EventStamp=3的事件,离开时,EventStamp又增为4。在事件3到达时,发现事件戳不匹配,忽略。如果再次进入,发送EventStamp=5事件,并且在事件5到达之前没有发生离开,那么事件5将触发。

    另一个问题是:对于网络事件,如何解决类似问题?为了验证EventStamp,接收者必须获得发送者的数据。如果同时发送2个事件,第一个用来通知EventStamp,第二个是事件本身。在保序环境下是否可以达到目的?思考中...
  • 相关阅读:
    我的黑客偶像
    IEEE754浮点数
    罗马数字转化为阿拉伯数字
    2020-2021-1 20201221 《信息安全专业导论》第三周学习总结
    base64
    2020-2021-1 20201221曾思源《第二周学习总结》
    师生关系
    教材速读问题
    20201221曾思源自我介绍
    20201221 曾思源 第一周学习总结
  • 原文地址:https://www.cnblogs.com/kaikai/p/102724.html
Copyright © 2011-2022 走看看