Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AS3 Error #1065

I must be missing something simple here, but in my main app, I import my Pages class, which in turn imports and dynamically instantiates one of two page types. Unfortunatley it only results in the error: ReferenceError: Error #1065: Variable PageA is not defined. (when I call Pages.load("A");)

Pages

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");
        }
    }
}
like image 646
Devin Rodriguez Avatar asked Dec 07 '25 02:12

Devin Rodriguez


1 Answers

Exactly, the compiler plainly didn't include those classes in the compiled SWF. I've hit this wall somewhere before, when I've tried instantiating via generated string (in my case 'Gem'+an integer), and received about the same error. I went around it by creating a dummy constant, enumerating all the classes I plan to use, this made the compiler aware of this. So, make the following:

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

And compile. Should do. Also, you don't need to import parts of "pages" package, they are already visible in your project, since your "Pages" class belongs to the same package.

like image 194
Vesper Avatar answered Dec 08 '25 20:12

Vesper



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!