我有一个包含数组的类。我似乎能够从多个类中很好地操作该数组,但它并非没有错误。在我的调试工作中,我遇到了 this这让我觉得我想做的是“错误”的方式。我是否可以理解,我可以从多个类访问一个数组(通过 getter/setter 函数或使其成为公共(public)属性),但是如果它是由一个框架/循环/tick 中的 2 个不同的类操作的,数组“引用”(或其他)不会在所有“引用”中都是最新的?
如果我理解正确的话,一个简单的"is"就可以了。如果我遗漏了什么,请帮忙。
有关如何构建程序以避免遇到此类问题的任何提示?
最佳答案
没有。 AS3 主循环是同步的,因此您不能同时设置两个不同的类,除非它们在决定要更改的内容时都不会使用其当前状态,例如根据该数组的数据存储操作将控制权返回到主事件循环后执行的操作。否则,如果您在多个类/实例中有多个事件监听器,并且所有监听器都监听同一事件,那么它们都会以某种方式排队(详细信息取决于添加事件监听器顺序、显示列表结构、捕获/气泡的监听器类型(如果适用)等) ,并且当某个类运行其事件监听器时,可以确定有问题的数组不是在其他地方操作,而是在其自己的事件监听器中操作。因此,使用普通的事件监听器,您可以安全地对任何类型的共享变量采用简单的访问模型。
Worker
是不同的东西,它们使用单独的线程,因此是真正并行的,因此需要额外的安全性来规划和实现访问同一实体进行读写的并行进程。
更新:我已阅读引用的答案,发现它令人困惑。这意味着,如果您不根据某些全局变量的内容定期更新某些内容,那么如果您需要立即更新自身,则必须告诉显示实体全局数据已更改。这不是确切的冲突,而是如果您的 View 未从模型更新其数据,则整个应用程序的状态不一致。这更像是一个设计缺陷,而不是实际的访问冲突。跳过它。
关于arrays - 我可以在 AS3 中操作多个类中的单个数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42897737/