所以我在Actionscript 3.0中创建了一个平台游戏,尝试调用一个基于数组生成块的函数。该代码位于“游戏”中。上课,并指向我的.fla上的动画片段 当它运行时我得到错误: "无法将flash.display :: Stage @ 2a2cdf99转换为flash.display.MovieClip。" 这是代码:
public function GameScreen(stageRef:Stage = null )
{
this.stageRef = stageRef;
btnReturn.addEventListener(MouseEvent.MOUSE_DOWN, returnMainMenu, false, 0, true);
mcMain.addEventListener(Event.ENTER_FRAME, moveChar);
this.addEventListener(Event.ENTER_FRAME, createLvl);
this.stageRef.addEventListener(KeyboardEvent.KEY_DOWN, checkKeysDown);
this.stageRef.addEventListener(KeyboardEvent.KEY_UP, checkKeysUp);
this.stageRef.addChild(blockHolder);
}
private function createLvl(event:Event):void
{
var lvlArray:Array = MovieClip(root)['lvlArray' +lvlCurrent];
var lvlColumns:int = Math.ceil(lvlArray.length/16);
for(var i:int = 0;i<lvlArray.length;i++){
if(lvlArray[i] == 1){
if(i/lvlColumns == int(i/lvlColumns)){
row ++;
}
var newBlock:Block = new Block();
newBlock.graphics.beginFill(0xFFFFFF);
newBlock.graphics.drawRect(0,0,50,50);
newBlock.x = (i-(row-1)*lvlColumns)*newBlock.width;
newBlock.y = (row - 1)*newBlock.height;
blockHolder.addChild(newBlock);
} else if (lvlArray[i] == 'MAIN'){
mcMain.x = (i-(row-1)*lvlColumns)*newBlock.width;
mcMain.y = (row-1)*newBlock.height;
}
}
row = 0;
}
请帮助=(
谢谢!
答案 0 :(得分:0)
首先:
开启&#34;允许调试&#34;在您的发布设置中。这将为您提供包含错误的行号,以便您可以确定错误的确切位置。
发布整个堆栈跟踪。这个错误本身并不是很多。
鉴于错误和您发布的代码,错误必须由您使用MovieClip(root)
引起。 root
属性并不总是指向Flash中的主时间轴,如果显示对象直接添加到舞台,它将指向Stage
。例如:
trace(stage.addChild(new Sprite()).root) // [object Stage]