有人能告诉我这段代码有什么问题吗?我正在尝试在动作脚本3中旋转按钮,我不断收到错误:
ArgumentError:错误#2025:提供的DisplayObject必须是子级 来电者。在flash.display :: DisplayObjectContainer / removeChild() 在 distributor_app_fla :: MainTimeline / NewChartOptionsReturn()[distributor_app_fla.MainTimeline ::帧1:218] 在 distributor_app_fla :: MainTimeline / ClickNewChartOptions()[distributor_app_fla.MainTimeline ::帧1:101]
我已经用Google搜索了错误,我读到的所有内容都告诉我要移除孩子,然后将其重新添加到框架中,但它会继续在相同位置断开。
代码:
//defined
var btnNewChartOptions:NewChartOptions = new NewChartOptions();
btnNewChartOptions.y = 279;
btnNewChartOptions.x = 439;
//created
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";
}
//actual code on 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";
}
任何帮助表示赞赏!
答案 0 :(得分:0)
不需要删除和重新添加对象,因为它既可以存在也可以用于方法,这意味着如果它可用于删除方法,那么它也可用于寻址和操作。这听起来很像范围/可见性问题。
此代码位于时间轴上的第1帧上,这意味着它应该能够处理直接在舞台上的任何内容,或者分配给运行该函数时在同一范围内的变量。 (在_root范围内,如果这是AS2,就像第1帧上的方法一样)
btnNewChartOptions是否在另一个DisplayObject中,就像用来保存所有按钮或其他东西的精灵,而不是直接坐在舞台上?也许你可以描述你试图解决的对象层次结构,以及按钮如何连接到舞台(例如在运行时实例化和附加或放在关键帧中的舞台上)。
您是否可以提供在尝试添加和删除修复之前抛出的错误?
答案 1 :(得分:0)
如果对我来说,该对象尚未添加到显示列表中。
// 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
这样就告诉我,在NewChartOptionsDown
首先被调用之前,不能调用NewChartDown
。因为从未添加过btnNewChartOptions。
你可以做的是将addChild(btnNewChartOptions);
移到函数之外。
//var created
var btnNewChartOptions:NewChartOptions = new NewChartOptions();
btnNewChartOptions.y = 279;
btnNewChartOptions.x = 439;
addChild(btnNewChartOptions);