Actionscript 3 无法转换闪存。显示::Stage@2a2cdf99flash.display.MovieClip?

Actionscript 3 无法转换闪存。显示::Stage@2a2cdf99flash.display.MovieClip?,actionscript-3,flash,adobe,Actionscript 3,Flash,Adobe,所以我在ActionScript3.0中创建了一个平台游戏,试图调用一个基于数组生成块的函数。代码在“Game”类中,直接指向my.fla上的movieclip 当它运行时,我得到一个错误: “无法转换闪存。显示::Stage@2a2cdf99闪光。显示。电影剪辑。“ 代码如下: public function GameScreen(stageRef:Stage = null ) { this.stageRef = stageRef; btnRetur

所以我在ActionScript3.0中创建了一个平台游戏,试图调用一个基于数组生成块的函数。代码在“Game”类中,直接指向my.fla上的movieclip 当它运行时,我得到一个错误: “无法转换闪存。显示::Stage@2a2cdf99闪光。显示。电影剪辑。“ 代码如下:

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;
    }
private函数createLvl(事件:event):void
{
var lvlArray:Array=MovieClip(root)['lvlArray'+lvlCurrent];
var lvlColumns:int=Math.ceil(lvlArray.length/16);
对于(var i:int=0;i首先:

  • 在发布设置中启用“允许调试”。这将为您提供包含错误的行号,以便您确定错误的确切位置

  • 发布整个堆栈跟踪。该错误本身并不会发生太多

  • 鉴于错误和您发布的代码,该错误一定是由您使用
    MovieClip(root)
    引起的。
    root
    属性并不总是指向Flash中的主时间线,如果显示对象直接添加到后台,则它将指向后台。例如:

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

    有关根目录的文档:

    GameScreen的stageRef属性是什么类型的?