2


我想用数组创建一个地图...我在flash上​​看到很多关于平台游戏创建的教程,但没有人用地图移动。

所以,我试着自己做。在移动我的地图之前,我必须创建它,这就是我的问题!所以,我让你看看三层代码并发表你的意见。

Flash 通知我一个错误 #1009,他无法访问空对象引用的属性或方法,我一次也看不到?

at Sansnom_fla::MainTimeline/createMap()
at Sansnom_fla::MainTimeline/frame1()

第 1 层

var grid:MovieClip = new MovieClip();   

// liste d'affichage
addChild(grid)                      

createMap()

第 2 层

function createMap():void{
    for (var i:int=0; i<20; i++){                               
        for (var j:int=0; j<15; j++){                           

            var T:int = 32
            var dT:int = T*.5
            var f:int = map[j][i]

            if(f>0) {
                var t:block = new block()
                t.x= i*T;       
                t.y= j*T;       
                t.gotoAndStop(f)        
                grid.addChild(t)
            }
        }
    }
}

第 3 层

 var map:Array = [
                     [1,1,1,1,1,1,10,0,0,11,1,1,1,1,1,1,1,1,1,1],
                     [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
                     [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
                     [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,1],
                     [1,0,0,0,0,0,6,1,0,0,4,4,4,4,0,0,6,1,0,1],
                     [1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
                     [1,0,0,0,1,6,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
                     [1,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
                     [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
                     [1,0,0,0,0,6,0,0,1,0,0,1,0,0,1,0,0,1,2,1],
                     [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
                     [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
                     [1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
                     [1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,3,1],
                     [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
                     ]

var stock:Array = [
                 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
                 ]

非常感谢 !Ps:正如你所了解的,block 是一个movieClip,其中一帧是一个特定的块。

4

1 回答 1

1

为什么要在层之间拆分代码?不要那样做。map此外,您甚至在第 2 层还存在之前就调用了它(直到第 3 层的代码运行后才创建它)所以我的建议是将它全部粘贴到 1 层的 1 帧上。

然后像这样调整您的代码顺序:

var map:Array = [
                 [1,1,1,1,1,1,10,0,0,11,1,1,1,1,1,1,1,1,1,1],
                 [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
                 [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
                 [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,1],
                 [1,0,0,0,0,0,6,1,0,0,4,4,4,4,0,0,6,1,0,1],
                 [1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
                 [1,0,0,0,1,6,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
                 [1,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
                 [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
                 [1,0,0,0,0,6,0,0,1,0,0,1,0,0,1,0,0,1,2,1],
                 [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
                 [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
                 [1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
                 [1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,3,1],
                 [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
                 ];

var stock:Array = [
             [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
             [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
             [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
             [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
             [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
             [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
             [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
             [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
             [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
             [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
             [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
             [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
             [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
             [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
             [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
             ];

function createMap():void{
    for (var i:int=0; i<20; i++){                               
        for (var j:int=0; j<15; j++){                           

            var T:int = 32
            var dT:int = T*.5
            var f:int = map[j][i]

            if(f>0) {
                var t:block = new block()
                t.x= i*T;       
                t.y= j*T;       
                t.gotoAndStop(f)        
                grid.addChild(t)
            }
        }
    }
}

var grid:MovieClip = new MovieClip();   

// liste d'affichage
addChild(grid);

createMap();

也不要忘记;角色,你有错过他们的习惯。无论如何,希望这会有所帮助!

于 2012-11-20T21:53:50.300 回答