• 当前位置:首页>>Director教程>>Director综合技巧>>Director 对象列表的调用与删除
  • Director 对象列表的调用与删除
  • Director 对象列表的调用与删除
       原著:lingoworkshop
       翻译:alphachi

       在调用一个对象列表时,如果其中一个对象从列表中删除了它本身,那么调用将被中断,而且其后所有对象的调用信息都将被遗漏。在一个stepframe事件中,如果一个对象从actorList中删除了它本身,将会发生同样的问题。

       例如,有五个对象A、B、C、D和E,首先使用call(#HandlerName, ListOfObjects)调用它们,那么此后若对象“B”从列表中删除了它本身,则对象C、D和E都将无法收到调用命令。

       要避免这个问题,有两种方法:

       1. 调用原列表的一个副本,这样既能使对象删除自己,而且又保持了列表本身的完整性。通常情况下,这种方法是最简单有效的(尤其是在列表本身所涉及的对象比较简单时)。

       2. 创建一个临时列表,用以纪录那些需要删除的对象,当调用结束后,再根据此列表进行删除。下面便是一个简单的例子:

    on mUpdateObjects
       garbageList = []
    call ( # mUpdate, listOfObjects, garbageList)
    repeat with anObject in garbageList
         listOfObjects. deleteOne (anObject)
    end repeat
    end

    on mUpdate ( me , garbageList)
    if removeMe() then garbageList. append ( me )
    else ... update as normal
    end

    [1]

  • 上一篇:如何在文本框中限制输入
    下一篇:利用director.ini调试应用程序