AS3错误#1065

时间:2012-09-05 00:04:05

标签: actionscript-3 flashdevelop

我必须在这里遗漏一些简单的东西,但是在我的主应用程序中,我导入了我的Pages类,后者又导入并动态实例化两种页面类型中的一种。不幸的是它只会导致错误: ReferenceError:错误#1065:未定义变量PageA。(当我调用 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");
        }
    }
}

1 个答案:

答案 0 :(得分:4)

确切地说,编译器显然没有在编译的SWF中包含这些类。之前我曾经在某个地方碰过这个墙,当时我尝试通过生成的字符串实例化(在我的情况下是'Gem'+一个整数),并收到了大约相同的错误。我通过创建一个虚拟常量,枚举我计划使用的所有类来解决它,这使编译器意识到这一点。所以,做出以下结论:

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

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