Flash Action Script 3旋转按钮

时间:2011-11-03 01:17:39

标签: actionscript-3 button rotation

有人能告诉我这段代码有什么问题吗?我正在尝试在动作脚本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";

}

任何帮助表示赞赏!

2 个答案:

答案 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);