Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3错误#1065_Actionscript 3_Flashdevelop - Fatal编程技术网

Actionscript 3 AS3错误#1065

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

这里我肯定缺少一些简单的东西,但在我的主应用程序中,我导入了Pages类,该类反过来导入并动态实例化两种页面类型中的一种。不幸的是,它只会导致错误:引用错误:错误#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;
        }
    }
}
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中继续开发了!