我想从一个扩展动画片段的课程中访问主时间轴的舞台。基本上,我在主时间轴上有一个按钮,可以显示HUD。 HUD是一个扩展的MovieClip类。当人们点击HUD中的按钮时,我想从主要MovieClip的舞台中删除该对象。
@curro:我认为您的混淆可能来自我从类定义文件运行此代码的事实。单击带有此对象的按钮,应将其从MainTimeline的DisplayList中删除。这是类定义文件中的代码:
package classes {
import flash.display.Stage;
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class Answers extends MovieClip {
public function Answers(){
listen();
}//constructor
//initiatlize variables
public var answersArray:Array = new Array();
private function listen():void {
submit_btn.addEventListener(MouseEvent.CLICK, function(e:MouseEvent){
answersArray.push(answer_txt.text);
e.currentTarget.parent.parent.stage.removeChild(this);
});//listen
}//listen
}//class Definition
}//package
trace(e.currentTarget.parent.parent)获取MainTimeline,并且trace(e.currentTarget.parent.parent.stage)似乎返回主阶段,但我不能使用removeChild而不会收到错误我试图强迫舞台成为一个DisplayObject(应该是它)。
MainTimeline舞台上的内容:单个按钮,单击该按钮时,会向舞台添加Answers类的实例。
Answers类的哪些部分不在代码中? 我首先在主库中创建了Answers作为MovieClip对象。它有3个部分:
答案 0 :(得分:2)
你的班级定义真的很奇怪。看起来像as2和as3的混合 试试这个:
package
{
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.text.*;
import fl.controls.Button;
public class Answers extends MovieClip
{
public var answersArray:Array = new Array();
public function Answers()
{
submit_btn.addEventListener(MouseEvent.CLICK, remove);
}
private function remove(e:MouseEvent)
{
answersArray.push(answer_txt.text);
this.parent.removeChild(this);
}
}
}
这适用于我的电脑。你的代码没有。我认为它与listen方法有关。该课程尚未实现,您正在努力工作。
答案 1 :(得分:0)
this.parent.removeChild(this);
答案 2 :(得分:0)
如果将该动画片段添加到舞台上,则可以从该课程中访问舞台,就像在文档类中一样简单
stage
否则您无法访问该班级的舞台。但是,您可以通过在实例化类时将阶段作为参数发送来访问它。