Actionscript 3 Flash动作脚本3旋转按钮
有人能告诉我这个代码有什么问题吗?我试图旋转动作脚本3中的一个按钮,但一直出现错误: ArgumentError:Error#2025:提供的DisplayObject必须是子对象 打电话的人的名字。在flash.display::DisplayObjectContainer/removeChild()中 在 distributor\u app\u fla::Main Timeline/NewChartOptions返回()[distributor\u app\u fla.MainTimeline::frame1:218] 在 distributor\u app\u fla::Main Timeline/单击新建图表选项()[distributor\u app\u fla.MainTimeline::frame1:101] 我已经在谷歌上搜索了这个错误,我读到的所有信息都告诉我删除这个孩子,然后再把它添加到相框中,但它仍然在同一个位置断裂 代码:Actionscript 3 Flash动作脚本3旋转按钮,actionscript-3,button,rotation,Actionscript 3,Button,Rotation,有人能告诉我这个代码有什么问题吗?我试图旋转动作脚本3中的一个按钮,但一直出现错误: ArgumentError:Error#2025:提供的DisplayObject必须是子对象 打电话的人的名字。在flash.display::DisplayObjectContainer/removeChild()中 在 distributor\u app\u fla::Main Timeline/NewChartOptions返回()[distributor\u app\u fla.MainTimelin
感谢您的帮助 无需删除和重新添加对象,因为对象是否存在并可用于方法,这意味着如果该对象可用于方法删除,则该对象也可用于寻址和操作。这听起来很像一个范围/可见性问题 此代码位于时间轴的第1帧上,这意味着它应该能够处理直接在阶段上的任何内容,或者在函数运行时分配给同一范围内的变量。(如果这是AS2,则在_根范围内,如第1帧上的方法) BtnewChartOptions是否在另一个DisplayObject中,比如用来按住所有按钮或其他东西的精灵,而不是直接坐在舞台上?也许您可以描述您试图解决的对象继承权,以及按钮如何附加到阶段(例如,在运行时实例化和附加,或放置在关键帧中的阶段)
您能否提供在尝试添加和删除修复之前引发的错误?如果我认为该对象尚未添加到显示列表中
// replace the following lines
removeChild(btnNewChartOptions);
addChild(btnNewChartOptions);
// with
if( !this.contains( btnNewChartOptions ) ){
return "";
}
[编辑]你的密码
//var created
var btnNewChartOptions:NewChartOptions = new NewChartOptions();
btnNewChartOptions.y = 279;
btnNewChartOptions.x = 439;
//button code clicked that creates button
function NewChartDown():String {
btnNewChartOptions.addEventListener(MouseEvent.CLICK, ClickNewChartOptions);
btnNewChartOptions.alpha = 0;
addChild(btnNewChartOptions);
var NewChartOptionsTween:Tween = new Tween(btnNewChartOptions, "alpha", Strong.easeOut, 0, 1, 1, true);
return "NewChartSelected";
}
//function for button
function NewChartOptionsDown():String {
rightGrayOut.alpha = 0;
addChild(rightGrayOut);
var grayOutTween:Tween = new Tween(rightGrayOut, "alpha", Strong.easeOut, 0, 1, 1, true);
var rotateTween:Tween = new Tween(btnNewChartOptions, "rotation", Strong.easeOut, 0, 180, 1, true);
return "NewChartOptions";
}
在您提供的代码中,您只执行
addChild(btnNewChartOptions)在NewChartDown
功能中的code>。
因此,这告诉我,只有先调用了NewChartDown
,才能调用NewChartDown
。因为BtnewChartOptions从未被添加。
您可以做的是移动addChild(btnNewChartOptions)代码>在函数外部
//var created
var btnNewChartOptions:NewChartOptions = new NewChartOptions();
btnNewChartOptions.y = 279;
btnNewChartOptions.x = 439;
addChild(btnNewChartOptions);
要修复您的修复,请尝试替换“removeChild(BtnewChartOptions);”使用if(btnNewChartOptions.parent==this)removeChild(btnNewChartOptions)代码>。然而,我认为您的修复方法是错误的。@Taurayinope仍然存在相同的运行时错误。至于把它放在错误的地方,这是很有可能的,因为我几乎完全不熟悉as3。当我点击按钮时,我试图使按钮旋转,我还能把它放在哪里?如果您愿意,我可以复制完整的代码,但它看起来像是一个混乱的评论,只需编辑您的问题,并将其张贴在底部,而不是将其放入评论中。此评论区域正上方是一个链接“编辑”单击它。错误与启动时通过编程添加的对象完全相同。我认为问题在于,在单击其他按钮之前,不会添加该按钮。iv尝试以完全相同的方式在两者之间进行的所有其他操作都已正常工作功能ClickNewChartOptions(事件:MouseeEvent):void{if(currentPosition==“NewChartOptions”)currentPosition=NewChartOptions向下();else currentPosition=NewChartOptions返回();}您可以粘贴实例化您试图寻址的按钮的代码吗?以及将ClickNewChartOptions处理程序注册到它所附加到的任何对象的代码。函数NewChartDown():字符串{btnNewChartOptions.addEventListener(MouseeEvent.CLICK,ClickNewChartOptions);btnNewChartOptions.alpha=0;addChild(btnNewChartOptions);var newchartOptions Tween:Tween=newtween(btnNewChartOptions,“alpha”,Strong.easeOut,0,1,1,true);返回“NewChartSelected”}我很确定它已添加到显示列表中,因为当我运行应用程序时,按钮会显示出来,但单击时会显示错误。否则,您的错误状态将为。请尝试提供的代码。或者发布更多与此问题相关的代码。我确实尝试过,但给出了相同的错误。你想要代码的哪一部分?我在上面创建按钮的地方贴了代码,唯一提到该按钮的地方是当它被定义时,不幸的是它不起作用。当我在调用它的函数之外添加它时,它仍然抛出了相同的错误。等等,按钮和舞台上有代码吗?从按钮上取下代码并将其移动到舞台。你这样做的方式超出了范围,它永远不会出现在按钮上。
//var created
var btnNewChartOptions:NewChartOptions = new NewChartOptions();
btnNewChartOptions.y = 279;
btnNewChartOptions.x = 439;
addChild(btnNewChartOptions);