Actionscript 3 使用键盘从阵列中移动贴图
Actionscript 3 使用键盘从阵列中移动贴图,actionscript-3,flash,Actionscript 3,Flash,我想创建一个带有数组的地图。。。我在flash上看到了很多关于平台游戏creatio的教程,但是没有一个人在移动地图 所以,我试着自己做。 在移动地图之前,我必须创建它,这是我的问题! 所以,我让你们看一看三层代码,并提出你们的意见 Flash向我宣布一个错误#1009,他无法访问空对象引用的属性或方法,而我一次也看不到 at Sansnom_fla::MainTimeline/createMap() at Sansnom_fla::MainTimeline/frame1() 第一层 var
我想创建一个带有数组的地图。。。我在flash上看到了很多关于平台游戏creatio的教程,但是没有一个人在移动地图 所以,我试着自己做。 在移动地图之前,我必须创建它,这是我的问题! 所以,我让你们看一看三层代码,并提出你们的意见 Flash向我宣布一个错误#1009,他无法访问空对象引用的属性或方法,而我一次也看不到
at Sansnom_fla::MainTimeline/createMap()
at Sansnom_fla::MainTimeline/frame1()
第一层
var grid:MovieClip = new MovieClip();
// liste d'affichage
addChild(grid)
createMap()
第二层
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)
}
}
}
}
非常感谢!
Ps:正如您所了解的,块是一个movieClip,其中一个帧是一个特定的块。为什么要在层之间拆分代码?不要那样做。另外,在第2层中调用
map
,它甚至还没有出现(直到第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();
var映射:数组=[
[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股票:数组=[
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
];
函数createMap():void{
对于(var i:int=0;i您确定第2层中的映射不是空的吗?stacktrace中给出的线是什么?不,有一个实数,让我试着用“1”,stacktrace:“TypeError:Error#1009:Il是不可能的,因为不可能访问空对象引用方法)在Sansnom_fla::main timeline/createMap()在Sansnom_fla::main timeline/frame1()“@Eustache这就是我告诉你的:D
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();