2011-11-03 145 views
0

任何人都可以告诉我这段代码有什么问题吗?我试图旋转动作脚本3一个按钮,我不断收到错误:Flash动作脚本3旋转按钮

ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller. at flash.display::DisplayObjectContainer/removeChild() at distributor_app_fla::MainTimeline/NewChartOptionsReturn()[distributor_app_fla.MainTimeline::frame1:218] at distributor_app_fla::MainTimeline/ClickNewChartOptions()[distributor_app_fla.MainTimeline::frame1:101]

我已经用谷歌搜索的错误和一切我读叫我删除的子然后重新添加到但它仍然在同一个地方破门。

代码:

//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

要解决您的修复尝试更换'removeChild之(btnNewChartOptions);用''如果(btnNewChartOptions.parent ==本)removeChild之(btnNewChartOptions);'。不过,我认为你的解决方法是一开始就是错误的方法。 – Taurayi

+0

@Taurayinope仍然存在相同的运行时错误。并且把它放到一个错误的地方,就像im几乎是全新的as3一样。即时通讯尝试使按钮旋转时点击 – Donovan

+0

补间,我可以在哪里放?如果你喜欢我可以复制完整的代码,但它看起来像一个评论混乱 – Donovan

回答

0

不需要删除和重新添加对象,因为它可以存在并可用于该方法,也就是说,如果该方法可用于删除方法,那么它也可用于寻址和操作。这听起来很像一个范围/可见性问题。

此代码位于时间轴上的第1帧,这意味着它应该能够处理任何直接在舞台上或分配给在该函数运行时处于相同范围内的变量的任何内容。 (在_root范围内,如果这是AS2,就像第1帧的方法一样)

btnNewChartOptions是否在另一个DisplayObject中,就像用来放置所有按钮或某物的sprite,而不是直接坐在舞台上?也许你可以描述你正试图解决的对象层次以及按钮如何连接到舞台(例如,在运行时实例化和附加或者放置在关键帧中的舞台上)。

您能否提供在尝试添加和删除修复程序之前引发的错误?

+0

错误是完全相同的,而且它们都是在开始时以编程方式添加的对象。我认为问题在于按钮不会被添加,直到点击不同的按钮。一切IV试图在完全相同的方式补间一直很好 – Donovan

+0

功能ClickNewChartOptions(事件:MouseEvent)方法:无效 { \t如果(currentPosition == “NewChartOptions”) \t \t currentPosition = NewChartOptionsDown(); \t else \t \t currentPosition = NewChartOptionsReturn(); } – Donovan

+0

您可以粘贴实例化您尝试解决的按钮的代码吗? – greenanvil

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); 
+0

我很确定它被添加到显示列表中,因为当我运行该应用程序时,该按钮显示出来,但在点击时出现错误 – Donovan

+0

那么您的错误状态,否则。请尝试提供的代码。或发布更多与该问题相关的代码。 –

+0

我曾尝试给出同样的错误。以及哪部分代码是你想要的?我发布了代码,其中按钮如果在上面创建,并且提及该按钮的唯一其他地方是其定义的 – Donovan