代码之家  ›  专栏  ›  技术社区  ›  Aethex

flex:从类访问MXML

  •  0
  • Aethex  · 技术社区  · 17 年前

    我有一个类在创建完成时实例化:

    public var catalog : AppCollection = new AppCollection (catalogStrip);
    

    CatalogStrip是一个HBox。

    在这个类中,我创建了一个vbox,并将它作为子级添加到catalogstrip。下面是所述类的构造函数:

    public function AppCollection (_container : HBox) {
        this.container = _container;
    }
    

    下面是我遇到问题的代码:

    public function populate (e : ResultEvent) : void {
        var appImage : Image = new Image ();
        var appText : Text = new Text ();
        var appContainer : VBox = new VBox ();
    
        appImage.source = "./res/Halo.png";
        appImage.width = 70;
        appImage.height = 70;
    
        appText.text = "Halo 4";
    
        appContainer.width = 110;
        appContainer.height = 125;
        appContainer.addChild (appImage);
        appContainer.addChild (appText);
    
        tbox = appContainer;
    
        this.container.addChild (appContainer);
    }
    

    在最后一行,它表示this.container为空。不可能的!我把它添加到构造函数中了!此外,我还尝试实例化main.mxml并从那里访问容器。当我从main.mxml中的脚本标记中尝试相同的代码时,它是有效的,但这会扼杀将类放在第一位的整个过程。如何从外部类访问MXML标记?我有我所有的进口货和所有的…

    1 回复  |  直到 17 年前
        1
  •  1
  •   Joel Hooks    17 年前
    public var catalog : AppCollection = new AppCollection (catalogStrip);
    

    是main.mxml的脚本部分吗?如果是这样,那么这就是您得到空对象的原因。你需要有一个方法:

    public var catalog : AppCollection;
    
    private function handleCreationComplete():void
    {
        this.catalog = new AppCollection(catalogStrip);
    }