无法将flash.display :: Stage @ 2a2cdf99转换为flash.display.MovieClip?

时间:2015-01-24 23:53:39

标签: actionscript-3 flash adobe

所以我在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;
    }

请帮助=(

谢谢!

1 个答案:

答案 0 :(得分:0)

首先:

  1. 开启&#34;允许调试&#34;在您的发布设置中。这将为您提供包含错误的行号,以便您可以确定错误的确切位置。

  2. 发布整个堆栈跟踪。这个错误本身并不是很多。

  3. 鉴于错误和您发布的代码,错误必须由您使用MovieClip(root)引起。 root属性并不总是指向Flash中的主时间轴,如果显示对象直接添加到舞台,它将指向Stage。例如:

    trace(stage.addChild(new Sprite()).root) // [object Stage]
    

    root上的文档:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html#root