Actionscript 3 添加了从未调用的\u到\u阶段函数

Actionscript 3 添加了从未调用的\u到\u阶段函数,actionscript-3,flash,Actionscript 3,Flash,我有一门课,它应该从舞台上取一个按钮(xBtn) 在文档类中,我这样称呼: import flash.display.MovieClip; import com.stx.utils.*; public class Main extends MovieClip { var xx : STXbutonx; public function Main() { xx = new STXbutonx(); } } 为什么从未调用我的init函数? 谢谢

我有一门课,它应该从舞台上取一个按钮(xBtn

在文档类中,我这样称呼:

import flash.display.MovieClip;
import com.stx.utils.*;

public class Main extends MovieClip {

    var xx : STXbutonx;

    public function Main() {    
        xx = new STXbutonx();
    }
}
为什么从未调用我的init函数?

谢谢

因为你从未将它添加到舞台上

将文档类更改为

public function Main() {    
    xx = new STXbutonx();
    addChild(xx);
}
Main保存对stage的引用,将子级添加到Main将子级添加到stage。因此,STXbutonx中的事件侦听器将启动


xBtn=stage.getChildByName('ics')作为MovieClip;//现在我有了未定义属性阶段的访问权限

您无权访问后台,因为STXButon不在后台,它不是DisplayObject。要解决此问题,请执行以下操作:

包com.stx.utils{

import flash.display.MovieClip;
import flash.events.*;

public class STXbutonx{

    private var xBtn  : MovieClip;
    private var stage : Stage;

    public function STXbutonx(stage:Stage) {
        this.stage = stage;
        init();           
    }

    private function init() : void {
        trace("int!");
        xBtn = stage.getChildByName('ics') as MovieClip;
        xBtn.addEventListener(MouseEvent.CLICK, onX);
        removeEventListener(Event.ADDED_TO_STAGE, init);
    }

    private function onX(e:MouseEvent) : void {
        trace("x Clicked!");
    }
}
}

当然

import flash.display.MovieClip;
import com.stx.utils.*;

public class Main extends MovieClip {

var xx : STXbutonx;

public function Main() {    
    xx = new STXbutonx(stage);
}

}

但是我的“ics”按钮在手动添加的舞台上,我只想从我的课堂上访问它。如果你问为什么没有调用STXbutonx的init函数,答案是你从来没有将STXbutonx添加到舞台上。您的“ics”按钮与此无关,与此问题完全分离。是否有必要在STXbuttonx类中扩展Movieclip?因为我不希望那个类是“ics”按钮类。我想成为一个类,从舞台上访问一些对象,并为它们添加一些功能,如鼠标单击。。。有可能吗?是的,关于init函数你是对的。我会接受你的回答。但是如果你愿意的话,请给我一个关于我想做什么的建议。感谢您,STXButonx不必扩展任何类。但是,您还必须删除eventlistener,因为类STXButonx的对象永远不会添加到后台。不要添加事件侦听器,而是直接在构造函数中调用init函数。
import flash.display.MovieClip;
import com.stx.utils.*;

public class Main extends MovieClip {

var xx : STXbutonx;

public function Main() {    
    xx = new STXbutonx(stage);
}