Actionscript 3 actionscript 3如何为按钮(非MovieClip)使用getChildByName

Actionscript 3 actionscript 3如何为按钮(非MovieClip)使用getChildByName,actionscript-3,mouseevent,movieclip,Actionscript 3,Mouseevent,Movieclip,好的,我有一个按钮(不是电影剪辑)叫“关闭”。我还有一个叫s的按钮和一个叫sMC的movieclip。基本上,一切都在一个框架上。代码首先使sMC隐藏和sClose隐藏。现在,当您单击s时,将显示sMC和sClose。SMC是一个屏幕,sClose只是一个关闭按钮,如果你点击它,它就会隐藏自己,也会隐藏SMC。因此,基本上,如果单击sCLose,它会将您带回原始屏幕。下面是ActionScript3CPDE sMC.visible=false; sCLose.visible=false; s.a

好的,我有一个按钮(不是电影剪辑)叫“关闭”。我还有一个叫s的按钮和一个叫sMC的movieclip。基本上,一切都在一个框架上。代码首先使sMC隐藏和sClose隐藏。现在,当您单击s时,将显示sMC和sClose。SMC是一个屏幕,sClose只是一个关闭按钮,如果你点击它,它就会隐藏自己,也会隐藏SMC。因此,基本上,如果单击sCLose,它会将您带回原始屏幕。下面是ActionScript3CPDE

sMC.visible=false;
sCLose.visible=false;
s.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(event:MouseEvent):void {
    var focus;
    var cB;
    focus = MovieCLip(getChildByName(event.target.name + "MC"));
    cB = Button(getChildByName(event.target.name + "Close"));
    focus.visible=true;
    cB.visible=true;

当我运行代码时,MovieClip(getChildByName)行没有错误,但是,它给出了Button(getChildByName)行的错误。它说“调用可能未定义的方法按钮”。为什么这样说?

除了DisplayObject之外,您实际上不需要将它强制转换为任何对象。您不使用Button的任何属性,因此如果您编写

cB = DisplayObject(getChildByName(event.target.name + "Close"));
cB.visible=true;

它应该可以工作。

你导入了
按钮
类了吗?我该怎么做?只是“导入按钮”?因为我试过了,它说“找不到定义按钮”。我想button类已经存在了,就像电影类一样。因为当我在Actionscript中键入“Button”时,它确实会发光。请注意,我不太使用Flash Professional,但假设它与纯AS3和Flex相同。在您的情况下,尝试将其放在代码的顶部:
import fl.controls.Button根据您在修改后的评论中所说的,这可能不会有什么帮助;)嗯,是的,仍然给出相同的错误。。它还说“fl.controls:按钮找不到”您实际上没有使用
SimpleButton
?这就是在Flash IDE中创建“按钮”时得到的结果。