2014-02-21 71 views
0

当我尝试使推土机出现在舞台上时,出现上述错误代码。这让我疯狂,我不知道为什么会发生。我的图书馆里有推土机剪辑,它似乎被正确定义。任何帮助将不胜感激。AS3错误#2007:参数子项必须为非空

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

另外:什么是startClick?另外:当你的问题涉及错误时,请发布完整的错误。 – FlavorScape

回答

1

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

var bulldozer: MovieClip = new MovieClip(); 

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

public var MovieClip = new MovieClip(); 

然后你就可以从这门课以外访问它。冲洗并重复开始画面。

nullundefined之间的差异。这是任何面向对象语言的基本原则。您的物体推土机(您要添加的孩子)在此处为空,因为它尚未用新构建。如果它未定义,那意味着var startScreen: MovieClip;丢失。

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

+0

好的,当我替换“var推土机:MovieClip”时“var bulldozer:MovieClip = new MovieClip;”,它仍然不起作用。 startClick是一个动态文本片段。我的新错误与替换读取,“错误:错误#2071:舞台类不执行此属性或方法 \t at Error $/throwError() \t at flash.display :: Stage/set x() \t在PlanetEarthGame_fla :: MainTimeline/startGame() “ – user3335696

+0

我以前的错误读,” 类型错误:错误#2007:参数孩子必须为非空 \t在flash.display使用::级DisplayObjectContainer /的addChild() \t在PlanetEarthGame_fla: :MainTimeline/startGame() “ – user3335696

+1

你是新的错误来自类似'bulldozer.x = stage.x = 150;'你试图设置'stage'的''x'属性,那就是不允许。 – Marcela

0

您有以下问题:

您需要创建推土机的实例作为FlavorScape如上所述。

这条线被定义推土机作为一个变量,但该变量是空的,或“空”:

var bulldozer: MovieClip; 

不能空变量添加到舞台,所以它导致错误(#2007 ),除非你创建这样一个实例:

var bulldozer: MovieClip = new MovieClip(); 

第二个错误(#2071)是试图设置x和舞台的y属性的结果。舞台从来没有x或y属性,所以线路是这样的:

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

应该

bulldozer.x = 150; 
bulldozer.y = 150; 
相关问题