【问题标题】:Need help cleaning up code (AS 3.0)需要帮助清理代码 (AS 3.0)
【发布时间】:2013-12-22 13:45:42
【问题描述】:

我在让我的代码正常工作时遇到了一些问题。一般来说,我对编码很陌生,对此我已经碰壁了。播放动画时出现错误

(TypeError: Error #2007: Le paramètre child ne doit pas être nul.
at flash.display::DisplayObjectContainer/removeChild()
at muis_fla::MainTimeline/onEnter()

知道这是为什么吗?

this.addEventListener( Event.ENTER_FRAME, onEnter );


function onEnter( e: Event ):void {

if (currentFrame <= 320){

    var s: Snow = new Snow();

    s.x=550*Math.random();
    s.y=0;
    s.width=s.height=9+12*Math.random();// 1 ~ 9

    s.xSpeed=-16+20*Math.random();// -2 ~ 2
    s.ySpeed=16+20*Math.random();// 1 ~ 5

    s.at = -0.001 -0.001*Math.random();
    s.vt = 0;
    this.addChild( s );

    s.addEventListener( Event.ENTER_FRAME, onSnowEnter );

} else {
    if(currentFrame == 321){
        this.removeChild(s);
    }
}

}

function onSnowEnter( e: Event ):void {
var s:Snow=e.currentTarget as Snow;

s.x+=s.xSpeed;
s.y+=s.ySpeed;

if (s.y>=0) {
}

【问题讨论】:

    标签: actionscript-3 function animation actionscript flash-cs5


    【解决方案1】:

    有几件事,当您调用“this.removeChild(s)”时,“this”指的是什么?我不懂法语,但在尝试移除孩子时,您似乎收到错误“不是调用者的孩子”。每当我收到该错误时,我都会添加一个 if 条件以确保我要移动的是 event.target 的子项。

    【讨论】:

      【解决方案2】:
      if(currentFrame == 321){
          this.removeChild(s);
      }
      

      s 变量在 IF 的分支 true 中定义。所以当你进入 else BRANCH 时不会实例化

      【讨论】:

        【解决方案3】:

        您的var s:Sprite 声明应在if-conditional 之外。 在您的代码中,如果到达第 321 帧,它会尝试删除一个名为 s 的子节点,但您没有在循环执行中创建它,因为 if 括号被跳过了。

        基本上是这样的:

        function onEnter( e: Event ):void {
        
        var s: Snow = new Snow();
        
        if (currentFrame <= 320){
        
            //...
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-07-29
          • 2010-11-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多