我必须在这里遗漏一些简单的东西,但是在我的主应用程序中,我导入了我的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");
}
}
}
答案 0 :(得分:4)
确切地说,编译器显然没有在编译的SWF中包含这些类。之前我曾经在某个地方碰过这个墙,当时我尝试通过生成的字符串实例化(在我的情况下是'Gem'+一个整数),并收到了大约相同的错误。我通过创建一个虚拟常量,枚举我计划使用的所有类来解决它,这使编译器意识到这一点。所以,做出以下结论:
private static const PAGES:Array=[PageA, PageB];
编译。应该做。此外,您不需要导入部分“pages”包,它们已经在您的项目中可见,因为您的“Pages”类属于同一个包。