AS3错误#2007:参数child必须为非null

时间:2014-02-21 18:38:38

标签: actionscript-3

当我试图让推土机出现在舞台上时,我在这段代码上遇到了上述错误。它让我发疯,我不知道为什么会这样。我的库中有推土机夹子,似乎是正确定义的。任何帮助将不胜感激。

import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.ui.Mouse;

//START SCREEN
var startScreen: MovieClip;
var bulldozer: MovieClip;

startClick.addEventListener(MouseEvent.CLICK, startGame);


function startGame(event: MouseEvent): void {
    startScreen.parent.removeChild(startScreen);
    startClick.parent.removeChild(startClick);
    addChild(bulldozer);
    var enemyGenerator: Number = Math.random();
    if (enemyGenerator >= 0.8) {
        bulldozer.x = stage.x = 150;
        bulldozer.y = stage.y = 150;
    } else if (enemyGenerator >= 0.6) {
        bulldozer.x = stage.x = 250;
        bulldozer.y = stage.y = 250;
    } else if (enemyGenerator >= 0.4) {
        bulldozer.x = stage.x = 350;
        bulldozer.y = stage.y = 350;
    } else if (enemyGenerator >= 0.2) {
        bulldozer.x = stage.x = 400;
        bulldozer.y = stage.y = 400;
    } else {
        bulldozer.x = stage.x = 450;
        bulldozer.y = stage.y = 450;
    }

    startClick.removeEventListener(MouseEvent.CLICK, startGame);
}

2 个答案:

答案 0 :(得分:1)

你必须创建一个推土机的实例!

var bulldozer: MovieClip = new MovieClip();

上面的代码将创建一个可从此类中的任何函数访问的类级实例变量。如果你说

public var MovieClip = new MovieClip();

然后您就可以从本课程外部访问它了。冲洗并重复使用startScreen。

null undefined 之间存在差异。这是任何OO语言的基本规则。您的对象推土机(您尝试添加的子项)此时为空,因为它尚未使用new构造。如果未定义,则意味着var startScreen: MovieClip;丢失。

请查看构造函数和实例变量。

答案 1 :(得分:0)

您有以下问题:

您需要创建一个推土机实例,如上面所述的FlavorScape。

这一行将推土机定义为变量,但该变量为空或“null”:

var bulldozer: MovieClip;

您无法向舞台添加空变量,因此除非您创建如下实例,否则会导致错误(#2007):

var bulldozer: MovieClip = new MovieClip();

第二个错误(#2071)是尝试设置stage的x和y属性的结果。舞台永远不会有x或y属性,所以这样的行:

bulldozer.x = stage.x = 150;
bulldozer.y = stage.y = 150;

应该是

bulldozer.x = 150;
bulldozer.y = 150;