zoukankan      html  css  js  c++  java
  • Timers and Transitions

    Timers and Transitions 可能是崩溃的其中一个最常见的原因,主要是因为无数的事件可
    以发生在timer/transition开始和结束之间。更糟糕的是,当你不在使用时忘记了去取消他
    们,它们可能会被困在内存中并引起更多的泄漏。

    有一种方法,你能管理好它们,把所有的timers and transitions储存在表中,以便当你确
    定没有timers and transitions应该运行时,你可以立即取消他们。

    如果你添加下列代码到你的main.lua文件(或另一个模块然后require它),你可以轻松地追
    踪你的timers and transitions并且在需要的时候立刻取消它们:

    timerStash = {}
    transitionStash = {}

    function cancelAllTimers()
    local k, v

    for k,v in pairs(timerStash) do
    timer.cancel( v )
    v = nil; k = nil
    end

    timerStash = nil
    timerStash = {}
    end

    --

    function cancelAllTransitions()
    local k, v

    for k,v in pairs(transitionStash) do
    transition.cancel( v )
    v = nil; k = nil
    end

    transitionStash = nil
    transitionStash = {}
    end

    然后,当你创建一个新的timer or transition时,首先分配到各自的表中,就像这样:

    ----------------------------------------------------------------------
    --错误,名称相同会覆盖掉!用下面方法
    timerStash.newTimer = timer.performWithDelay( ...

    transitionStash.newTransition = transition.to( myObject { ...
    ----------------------------------------------------------------------
    --正确
    timerStash[#timerStash + 1] = timer.performWithDelay( ...

    transitionStash[#transitionStash + 1] = transition.to( myObject { ...

    那么你可以同时使用 cancelAllTimers() and cancelAllTransitions()方法来停止所有的
    timers和transitions。如果有的timers不想取消,那么一开始就不要添加到存储表中(但
    可别忘了取消它)。

  • 相关阅读:
    详解 ASP.NET异步
    web开发中对网站建设
    《如何学习C++语言》和《如何学习C语言》
    WCF体系架构(之一:Client与Server信息交互处理流程初略介绍)
    常用的shell命令
    功能最强大的.Net代码生成器——EasyCode,欢迎使用
    对面向对象设计原则的总结
    学习之模块架构 DotNetNuke 6
    软件测试
    微软开放ASP.NET MVC 4、Web API和Web Pages v2的源代码
  • 原文地址:https://www.cnblogs.com/superchao8/p/2334209.html
Copyright © 2011-2022 走看看