Actionscript 3 从类定义文件(as3)访问主阶段
我想从一个扩展movieclip的类访问主时间轴的阶段。基本上,我在主时间线上有一个按钮,可以显示HUD。HUD是一个扩展的MovieClip类。当人们点击HUD中的一个按钮时,我想从主电影剪辑的舞台上移除该对象 @curro:我想你的困惑可能是因为我从一个类定义文件运行这段代码。单击带有此对象的按钮应将其从主时间线的显示列表中删除。下面是类定义文件中的代码:Actionscript 3 从类定义文件(as3)访问主阶段,actionscript-3,Actionscript 3,我想从一个扩展movieclip的类访问主时间轴的阶段。基本上,我在主时间线上有一个按钮,可以显示HUD。HUD是一个扩展的MovieClip类。当人们点击HUD中的一个按钮时,我想从主电影剪辑的舞台上移除该对象 @curro:我想你的困惑可能是因为我从一个类定义文件运行这段代码。单击带有此对象的按钮应将其从主时间线的显示列表中删除。下面是类定义文件中的代码: package classes { import flash.display.Stage; import flash.d
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对象。它有三个部分:
嘿,我不能从代码中看出头绪。提交来自哪里?它是该类的属性吗?答案呢?
您不需要访问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中没有进行太多的开发)。由于某种原因,它在我自己的计算机上坏了。