Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 从类定义文件(as3)访问主阶段_Actionscript 3 - Fatal编程技术网

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

Actionscript 3 从类定义文件(as3)访问主阶段,actionscript-3,Actionscript 3,我想从一个扩展movieclip的类访问主时间轴的阶段。基本上,我在主时间线上有一个按钮,可以显示HUD。HUD是一个扩展的MovieClip类。当人们点击HUD中的一个按钮时,我想从主电影剪辑的舞台上移除该对象 @curro:我想你的困惑可能是因为我从一个类定义文件运行这段代码。单击带有此对象的按钮应将其从主时间线的显示列表中删除。下面是类定义文件中的代码: package classes { import flash.display.Stage; import flash.d

我想从一个扩展movieclip的类访问主时间轴的阶段。基本上,我在主时间线上有一个按钮,可以显示HUD。HUD是一个扩展的MovieClip类。当人们点击HUD中的一个按钮时,我想从主电影剪辑的舞台上移除该对象

@curro:我想你的困惑可能是因为我从一个类定义文件运行这段代码。单击带有此对象的按钮应将其从主时间线的显示列表中删除。下面是类定义文件中的代码:

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)获取主时间线,trace(e.currentTarget.parent.parent.stage)似乎返回主阶段,但我无法使用removeChild,因为我无法获取一个错误,即我试图强制该阶段成为DisplayObject(它应该是)

MainTimeline的舞台上有什么:单击一个按钮,将Answers类的实例添加到舞台上

答案类中哪些部分不在代码中? 我首先在主库中创建答案作为MovieClip对象。它有三个部分:

  • 名为“answer_txt”的文本字段
  • 清除答案的“清除”btn
  • 一个“submit_btn”,它提交answer_txt的文本,然后从主时间线中删除整个Answers对象(至少我希望它这样做)

  • 嘿,我不能从代码中看出头绪。提交来自哪里?它是该类的属性吗?答案呢?
    您不需要访问e.currentTarget。。。要删除“this”,只需执行以下操作:

    this.parent.removeChild(this);
    

    你的类定义真的很奇怪。看起来像是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方法有关。该类尚未安装,您正在使其工作。

    如果您将该movieclip添加到stage,则可以从该类访问stage,就像在document类中一样简单

    stage
    

    否则,您无法从该类访问stage。但是在实例化类时,您可以通过将stage作为参数发送来访问它。

    当我跟踪e.current.Target.parent.parent时,我确实得到了输出[object MainTimeline]。但是,当我尝试从该时间线中删除一个子项时,我得到类型强制失败:无法转换global@3c0f30b1到flash.display.DisplayObject。在MethodInfo-217()。是否有办法将其转换到主时间线的阶段?(我还尝试了e.currentTarget.parent.parent.stage.removeChild(这个)和那个也不起作用。我认为你必须更好地解释阶段上的内容、单击的内容以及要从阶段中删除的内容。你可能不需要两个家长(e.currentTarget.parent.parent),而只需要一个家长(e.currentTarget.parent.remove…)但是,通过阅读您的描述很难看出您正在尝试做什么。如果您可以更准确地说:如何将对象添加到stage中,它们是否嵌套?etcI希望这样。parent.removeChild(此)起作用,但它不起作用(这是我尝试的第一件事)。this.parent.removeChild(此)返回错误“一个术语在MethodInfo-217()上没有定义,也没有属性。”我在原始帖子中添加了一些内容,以便更清楚地说明我在尝试做什么。你也可以在上查看一个示例:在朋友的示例帮助下,我找到了它。问题是我在addEventListener方法上使用了匿名函数。这是我做了很多的事情(仅限AS3;我在AS2中没有进行太多的开发)。由于某种原因,它在我自己的计算机上坏了。