从类定义文件(as3)访问主阶段

时间:2010-03-22 21:58:29

标签: actionscript-3

我想从一个扩展动画片段的课程中访问主时间轴的舞台。基本上,我在主时间轴上有一个按钮,可以显示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个部分:

  1. 名为“answer_txt”
  2. 的TextField
  3. 清除answer_txt
  4. 的“clear_btn”
  5. 提交answer_txt文本的“submit_btn”,然后从MainTimeline中删除整个Answers对象(至少,这就是我想要它做的事情)。

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)

嘿,我不能从代码中做出头或尾。 submit_btn来自哪里?这是班级的财产吗?那么answer_txt怎么样? 您无需访问e.currentTarget ...即可删除“this”:

this.parent.removeChild(this);

答案 2 :(得分:0)

如果将该动画片段添加到舞台上,则可以从该课程中访问舞台,就像在文档类中一样简单

stage

否则您无法访问该班级的舞台。但是,您可以通过在实例化类时将阶段作为参数发送来访问它。