有没有可以延迟更新方法的设计模式?

时间:2019-05-12 09:08:36

标签: design-patterns sequence delay updates

Render函数需要多次执行才能仅被调用一次(用于输入数据收集)。我可以每次强制调用Render函数,它不会破坏代码,但最终会很慢。

在画布之外多次调用了延迟的更新(并非始终是),无法知道这些调用的时间或顺序。

假设我无法控制OnFrame函数的帧频速度。

是否有更好的方法,不使用,使用计时器或事件在数据收集完成后重新绘制画布?

这是我到目前为止所得到的:

    // called in many places 
    canvas.InputData( x );

    // ---------------------- Canvas class ------------------- 

    data = new Dictionary();

    InputData( key, x )
    {
        data[ key ] = x;

        Delayed_Render();
    }

    _counter = 0;
    _request = false;
    _delayed = false;
    _complete = false;

    Delayed_Render()
    {
        if( _request || ! _complete ) return;

        _request = true;
        _complete = false;
    }

    override OnFrame()
    {
        if( ++ _counter < 10 ) return;

        _counter = 0;

        if( _request ) 
        {
            _request = false;
            _delayed = true;

            Render();
        }
    }

    override OnResize()
    {
        Render();
    }

    Render()
    {
        // ....................................
        // code to render canvas using the data  
        // ....................................

        if( _delayed ) 
        {
            _complete = true;
            _delayed = false;
        }
    }

0 个答案:

没有答案