3

我必须在这里遗漏一些简单的东西,但在我的主应用程序中,我导入了我的 Pages 类,该类又导入并动态实例化两种页面类型之一。不幸的是,它只会导致错误:ReferenceError: Error #1065: Variable PageA is not defined。(当我调用Pages.load("A");时)

页面

package pages 
{
    import pages.PageA;
    import pages.PageB;
    import flash.display.Sprite;
    import flash.utils.getDefinitionByName;

    public class Pages 
    {
        public static function load(pageType:String):void
        {
            var pageClass:Class = getDefinitionByName("pages.Page"+pageType) as Class;
        }
    }
}

页面A

package pages 
{
    import flash.display.Sprite;

    public class PageA extends Sprite 
    {
        public function PageA()
        {
            trace("PageA init");
        }
    }
}

页面B

package pages 
{
    import flash.display.Sprite;

    public class PageB extends Sprite 
    {
        public function PageB()
        {
            trace("PageB init");
        }
    }
}
4

1 回答 1

4

确切地说,编译器显然没有在编译的 SWF 中包含这些类。当我尝试通过生成的字符串(在我的情况下为'Gem'+一个整数)进行实例化时,我曾在某处碰过这堵墙,并收到了大约相同的错误。我通过创建一个虚拟常量来绕过它,枚举我计划使用的所有类,这让编译器意识到了这一点。因此,请执行以下操作:

private static const PAGES:Array=[PageA, PageB];

并编译。应该做。此外,您不需要导入“pages”包的一部分,它们已经在您的项目中可见,因为您的“Pages”类属于同一个包。

于 2012-09-05T03:56:01.343 回答