Actionscript 3 添加了从未调用的\u到\u阶段函数
我有一门课,它应该从舞台上取一个按钮(xBtn) 在文档类中,我这样称呼: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函数? 谢谢
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);
}