清除场景会导致从内存中删除全局显示对象

时间:2012-10-21 17:26:42

标签: storyboard global-variables corona

我有一个问题,当我调用storyboard.purgeScene()时,我的全局显示对象似乎被删除了。当我说'全局'时,我实际将它们存储在用户定义的故事板表中,以避免使用实际的全局变量:

我的图片数据库存储在外部文件toy_database.lua中:

local storyboard = require "storyboard";

    storyboard.globalVars.toys = {
            ball1 = {
                    src = 'img/stock-vector-soccer-ball-trimmed.png',
            }
    }


main.lua:

local storyboard = require "storyboard";

storyboard.globalVars = {};

require "toy_database_toybox";

我在main.lua中加载了一些图像:

storyboard.globalVars.toys["ball1"].imgPtr = display.newImageRect(storyboard.globalVars.toys["ball1"].src, w, h);


然后我去了另一个场景:

storyboard.gotoScene("mainFloorScene");


一切都很好,显示对象是可访问的。我清除那个场景并转到另一个场景:

storyboard.gotoScene( "openBoxScene" )
[in didExitScene()]: storyboard.purgeScene( "mainFloorScene" )


这里的一切都很好。最后,我回到第一个场景,在途中清除当前场景:

storyboard.gotoScene( "mainFloorScene", "fade", 400 );
[in didExitScene()]: storyboard.purgeScene( "openBoxScene" )

回到第一个场景中,图像对象已被删除。如果我注释掉这一行:

storyboard.purgeScene( "openBoxScene" )

它工作正常,所以我有一个解决方法,但我想解释这种行为。我希望场景清除只删除该场景的本地显示对象。

发生了什么事?

1 个答案:

答案 0 :(得分:0)

我使用完全相同的方法来存储我的数据。我也使用过purgeScene,但我的数据没有删除。我现在不想测试这个。我建议你在较旧的版本上尝试这个。