网站设计模式与AS3和闪存

时间:2011-12-22 18:30:58

标签: flash actionscript-3 design-patterns

我即将在flash和AS3中建立一个网站,其中一些页面将通过flash创作程序提供内容,而其他页面将由as3动态生成(不仅仅是页面内容,而是新页面本身将是通过AS3添加)。我试图找出支持这一点的通用代码架构。

首先想到的解决方案是:让任何单个页面内容的所有子显示对象都包含在容器影片剪辑中。这样我每个页面上都会有一个电影剪辑。首先,我可以通过将alpha设置为none来管理此人所在的页面,禁用不是当前页面的Movie-clip的所有鼠标交互性。但我不确定这是管理内存的最佳方式。另一种可能性是在不使用时将这些影片剪辑移出舞台边界之外,但这可能会遇到相同的内存问题。最后,我可以添加和删除显示对象,以便一次只有一个动画片段在舞台上,但是如何保留在flash创作程序中构建的页面?我可以将所有这些存储在AS3的某个地方,所以我可以将原来的形式添加到显示器中吗?

如果有人知道某些可能会解决这些问题的文章,或者解释AS3 / flash网页的简单设计模式,那就太棒了。我确信比我聪明的人已经想到了这一点,而且我不想重新发明轮子。

1 个答案:

答案 0 :(得分:1)

我会将每个“页面”“导出”到他们自己的类(从库中),以及每个页面的任何特定代码的相应.as文件。然后有一个名为mainContent_mc的MovieClip,它在舞台上总是作为占位符存在。

如果要加载新页面,请调用以下函数:

function loadPage(pageNumber:int):void {
    //Remove any children of the content placeHolder
    //TODO: Handle any other memory management here as well
    while(mainContent_mc.numChildren > 0){      
        mainContent_mc.removeChildAt(0);
    }

    //Add the desired page
    switch(pageNumber){
        case 0:
            var p0:HomePage = new HomePage();
            mainContent_mc.addChild(p0);
            break;
        case 1:
            var p1:AboutPage = new AboutPage();
            mainContent_mc.addChild(p1);
            break;
    }
}

当然,如果您的网页内存非常小,那么您只需为所有“网页”设置.visible = false;即可,但我仍然可以按照上述方式对其进行整理。