Actionscript 3 AS3错误#1065
这里我肯定缺少一些简单的东西,但在我的主应用程序中,我导入了Pages类,该类反过来导入并动态实例化两种页面类型中的一种。不幸的是,它只会导致错误:引用错误:错误#1065:变量PageA未定义。(当我调用Pages.load(“A”);) 页面Actionscript 3 AS3错误#1065,actionscript-3,flashdevelop,Actionscript 3,Flashdevelop,这里我肯定缺少一些简单的东西,但在我的主应用程序中,我导入了Pages类,该类反过来导入并动态实例化两种页面类型中的一种。不幸的是,它只会导致错误:引用错误:错误#1065:变量PageA未定义。(当我调用Pages.load(“A”);) 页面 package pages { import pages.PageA; import pages.PageB; import flash.display.Sprite; import flash.utils.getDe
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;
}
}
}
PageA
package pages
{
import flash.display.Sprite;
public class PageA extends Sprite
{
public function PageA()
{
trace("PageA init");
}
}
}
PageB
package pages
{
import flash.display.Sprite;
public class PageB extends Sprite
{
public function PageB()
{
trace("PageB init");
}
}
}
确切地说,编译器显然没有在编译的SWF中包含这些类。当我尝试通过生成的字符串(在我的例子中是'Gem'+一个整数)实例化时,我曾经在某个地方碰到过这堵墙,并且收到了大约相同的错误。我创建了一个伪常量,列举了我计划使用的所有类,这让编译器意识到了这一点。因此,请执行以下操作:
private static const PAGES:Array=[PageA, PageB];
并编译。应该这样做。另外,您不需要导入“pages”包的某些部分,它们在您的项目中已经可见,因为您的“pages”类属于同一个包。看起来您不应该对发布的代码有问题。你确定这就是你所拥有的吗?你的加载函数看起来很无用,因为它不返回任何东西,也不存储任何超出函数范围的东西。我已经将代码裁剪到再现错误所需的最小值。我确定的是,因为类没有在代码中声明,编译器没有包含它们,所以当应用程序本身加载它们时,它们就不存在了。天才!完美的解决方案,非常感谢。现在我已经解决了那个讨厌的问题,我可以在FlashDevelop中继续开发了!