self.view对象清理

我试图理解如何在场景被销毁后高效地移除场景对象。根据corona docs的说法,在销毁场景时可以将对象插入到 self.view 中以进行清理。

这是我正在尝试的代码

[代码已省略]

它似乎很好用,因为一旦场景被销毁,所有矩形都会从屏幕上移除,但是我看到应用程序打印消息“rectTransComplete .. called”,即使场景被销毁后仍然打印。为什么会这样,并且为什么转换在对象被删除后不会自动取消。我需要通过迭代所有矩形并取消每个转换来手动取消所有转换吗?那 rects 表呢,它还包含对矩形的引用。我需要手动清理它吗?如果我需要手动清理所有内容(或大部分内容),那么使用 self.view 的好处到底是什么?

点赞
用户1376249
用户1376249

你需要在 scene:destroy 函数中调用 transition.cancel()

2014-07-09 12:04:33
用户2895078
用户2895078

将下面翻译成中文并且保留原本的 markdown 格式

只是一个注意事项,如果您曾经使用Runtime events(运行时事件)来向您的显示对象传播事件,您也会遇到相同的问题。

我几天前也遇到了同样的问题,有两种方法可以解决:

方法一:您保留打开的过渡的引用,迭代所有引用并在它们上调用transition.cancel(transitionReference)

方法二:您在矩形对象中创建一个监听器,在场景销毁时向矩形对象发送一个运行时事件来触发监听器,在监听器内“取消”与当前矩形相关联的过渡(transition.cancel(rectangle))。 如果您需要了解如何使用运行时事件的 howto,请查看此文章:http://www.engelteddy.com/softwaredevelopment/mobiledevelopment/observer-pattern-corona-sdk/

2014-07-12 09:13:15