需要帮助清理代码(AS 3.0)

时间:2013-12-05 14:48:25

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

我在使代码正常工作时遇到了一些问题。我对编码一般都很陌生,而且我对此有所了解。播放动画时出现错误

(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) {
}

3 个答案:

答案 0 :(得分:0)

一些事情,当你打电话给“this.removeChild(s)”时,“this”指的是什么?我不读法语,但看起来你在尝试删除孩子时收到错误“不是打电话的孩子”。每当我收到错误时,我都会添加一个if条件,以确保我要移动的内容是event.target的子项。

答案 1 :(得分:0)

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

的变量在IF的分支中定义。所以当你进去时,BRANCH没有实例化

答案 2 :(得分:0)

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

基本上,像这样:

function onEnter( e: Event ):void {

var s: Snow = new Snow();

if (currentFrame <= 320){

    //...