Flash 没有时间线的视图(页面)
我有一个相对简单的问题。在不使用时间线的情况下,重新创建多页应用程序的最佳方法是什么。我创建了一个pagemanager类,它添加和删除类,类充当页面。现在这似乎不是一个非常有效的方法。 我相信flex提供了一种与HTML类似的方法,但现在转向flex已经太晚了 有什么建议吗?Flash 没有时间线的视图(页面),flash,actionscript-3,Flash,Actionscript 3,我有一个相对简单的问题。在不使用时间线的情况下,重新创建多页应用程序的最佳方法是什么。我创建了一个pagemanager类,它添加和删除类,类充当页面。现在这似乎不是一个非常有效的方法。 我相信flex提供了一种与HTML类似的方法,但现在转向flex已经太晚了 有什么建议吗? 提前感谢。我建议您创建一个与Flex中的viewstack类似的类。将其与接口(例如IPage)一起使用,以强制viewstack用于加载和卸载/处置页面的方法。在viewstack上运行changePage方法后,将处
提前感谢。我建议您创建一个与Flex中的viewstack类似的类。将其与接口(例如IPage)一起使用,以强制viewstack用于加载和卸载/处置页面的方法。在viewstack上运行changePage方法后,将处理当前页面并打开新页面。运行此功能后,可以很容易地添加过渡 类似于以下内容(此代码未经验证):
IPage.as
package
{
public interface IPage
{
function open() : void
function close() : void
}
}
ViewStack.as
package
{
import flash.display.Sprite;
public class ViewStack extends Sprite
{
public function ViewStack()
{
super();
}
public function addPage(pageID : String, page : IPage) : void
{
// add page to list
}
public function removePage(pageID : String) : void
{
// remove page from list
}
public function changePage(pageID : String) : void
{
if(_currentPage)
{
_currentPage.close();
removeChild(_currentPage);
}
_currentPage = getPageById(pageID);
_currentPage.open();
addChild(_currentPage);
}
}
}
看起来确实是最好的解决办法。这方面的主要问题是,删除页面后,这些页面中的所有EventListener仍在运行,我必须手动删除它们。仍然可行,但不是很方便。此外,我不熟悉接口(羞耻),为什么我要将打开和关闭函数放在接口中而不放在viewstack类中,以及它如何在接口中运行?通过使用一个接口,您可以有多个实现同一接口的页面,并强制设置已定义的方法/函数。例如:IntroPage和OutroPage在其打开/关闭方法中具有不同的功能。但只要它们有这些方法,viewstack就可以使用它们,而无需引用实际的类(及其引用)。您还可以通过一个抽象类(AbstractPage)来实现这一点,在这个抽象类中重写mehods。
package
{
import flash.display.Sprite;
public class ViewStack extends Sprite
{
public function ViewStack()
{
super();
}
public function addPage(pageID : String, page : IPage) : void
{
// add page to list
}
public function removePage(pageID : String) : void
{
// remove page from list
}
public function changePage(pageID : String) : void
{
if(_currentPage)
{
_currentPage.close();
removeChild(_currentPage);
}
_currentPage = getPageById(pageID);
_currentPage.open();
addChild(_currentPage);
}
}
}