我即将在flash和AS3中建立一个网站,其中一些页面将通过flash创作程序提供内容,而其他页面将由as3动态生成(不仅仅是页面内容,而是新页面本身将是通过AS3添加)。我试图找出支持这一点的通用代码架构。
首先想到的解决方案是:让任何单个页面内容的所有子显示对象都包含在容器影片剪辑中。这样我每个页面上都会有一个电影剪辑。首先,我可以通过将alpha设置为none来管理此人所在的页面,禁用不是当前页面的Movie-clip的所有鼠标交互性。但我不确定这是管理内存的最佳方式。另一种可能性是在不使用时将这些影片剪辑移出舞台边界之外,但这可能会遇到相同的内存问题。最后,我可以添加和删除显示对象,以便一次只有一个动画片段在舞台上,但是如何保留在flash创作程序中构建的页面?我可以将所有这些存储在AS3的某个地方,所以我可以将原来的形式添加到显示器中吗?
如果有人知道某些可能会解决这些问题的文章,或者解释AS3 / flash网页的简单设计模式,那就太棒了。我确信比我聪明的人已经想到了这一点,而且我不想重新发明轮子。
答案 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;
即可,但我仍然可以按照上述方式对其进行整理。