0

我正在构建一个 AIR 应用程序,它可以从用户计算机加载和播放 mp3,我几乎直接使用书中的代码来执行此操作:

function startTrack()
{
    if (isStarted == 0)
    {
        theSound = new air.Sound();
        urlReq  = new air.URLRequest(...dynamicaly generated extension);
        theSound.load(urlReq);
        soundHandle = theSound.play();
        isStarted = 1;
    }
    else
    {
        soundHandle.stop();
        soundHandle = null;
        theSound = null;
        urlReq = null;
        isStarted = 0;
        startTrack();
    }
}

应用程序的页面上有一系列播放不同 mp3 的链接,当您单击一个链接时,它会将声音的路径传递到urlReq并播放它。当您单击第二个声音时,它会停止第一个播放并播放下一个。我认为会发生的是旧声音会被调用theSound = null等破坏,但它似乎只是停止声音播放新声音并保持旧声音加载,因此在启动并保留大量曲目后您最终会耗尽系统内存加载。

因此,如果有人知道如何卸载声音或如何从应用程序正在使用的系统内存中转储内容,将不胜感激。

谢谢大家

将要

4

1 回答 1

0

在删除所有相关元素后调用 air.System.gc()。

于 2012-04-19T14:52:38.760 回答