Actionscript 3 使用键盘移动生成的网格
我正在尝试用键盘移动生成的网格。。。 当我尝试我的.swf文件时,它会运行,但键盘。。。 这是一个平台游戏,如马里奥,所以你应该罚款一些代码行谁没有感觉到那里,但我保证你他们会 因此,这是我的AS:Actionscript 3 使用键盘移动生成的网格,actionscript-3,flash,Actionscript 3,Flash,我正在尝试用键盘移动生成的网格。。。 当我尝试我的.swf文件时,它会运行,但键盘。。。 这是一个平台游戏,如马里奥,所以你应该罚款一些代码行谁没有感觉到那里,但我保证你他们会 因此,这是我的AS: 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],
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();
addChild(grid);
createMap();
stage.addEventListener(KeyboardEvent.KEY_DOWN, pushin);
stage.addEventListener(KeyboardEvent.KEY_UP, pushout);
var right:Boolean=false;
var left:Boolean=false;
var up:Boolean=false;
var down:Boolean=false;
var lateral:Boolean = false;
var saute:Boolean = false ;
var none:Boolean = true
function paramMap():void {
grid.sens = int(right)-int(left);
grid.up = int(up)-int(down)
grid.jump = -int(up)*11
none = !right && !left && !up && !down
lateral = right || left;
function movingGrid():void{
var L:int
var C:int
var Ls:int
var Cs:int
var A:Object
var B:Object
var Y:Number
var P:Array
with(grid){
x += vit*sens;
L = y/T;
C = x/T;
Ls = (y+T-1)/T;
Cs = (x+vit*sens)/T;
P = checkLateral(grid,L,Cs,vit*2,(y-dT)/T)
L = P[0]
Cs = P[1]
A = stock[L][C]
B = stock[Ls][C]
Y = (L-1)*T
y += gravite;
if (gravite++>T) gravite=T
}
}
}
function pushin(event:KeyboardEvent):void {
if (event.keyCode == 38) up = true;
if (event.keyCode == 40) down = true;
if (event.keyCode == 39) right = true;
if (event.keyCode == 37) left = true;
}
function pushout(event:KeyboardEvent):void {
if (event.keyCode == 38) up = false;
if (event.keyCode == 40) down = false;
if (event.keyCode == 39) right = false;
if (event.keyCode == 37) left = false;
}
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;iT)重力=T
}
}
}
功能推入(事件:键盘事件):无效{
如果(event.keyCode==38)up=true;
如果(event.keyCode==40)down=true;
如果(event.keyCode==39)right=true;
如果(event.keyCode==37)left=true;
}
功能推出(事件:键盘事件):无效{
如果(event.keyCode==38)up=false;
如果(event.keyCode==40)down=false;
如果(event.keyCode==39)right=false;
如果(event.keyCode==37)left=false;
}
谢谢大家! 我现在看到几个问题:
及其内部函数paramMap
从未被任何人调用。您可能希望将它们挂接到movingGrid
事件侦听器,或者在用户按键时调用它们ENTER\u FRAME
的grid
和vit
属性不在代码的这一部分,因此当我测试时,它抛出一个T
。ReferenceError
也是如此检查横向
网格
:
var grid:MovieClip = new MovieClip();
addChild(grid);
stage.addEventListener(KeyboardEvent.KEY_DOWN, pushin);
stage.addEventListener(KeyboardEvent.KEY_UP, pushout);
var right:Boolean = false;
var left:Boolean = false;
var up:Boolean = false;
var down:Boolean = false;
var lateral:Boolean = false;
var saute:Boolean = false;
var none:Boolean = true;
function paramMap():void
{
grid.sens = int(right) - int(left);
grid.up = int(up) - int(down);
grid.jump = - int(up) * 11;
none = ! right && ! left && ! up && ! down;
lateral = right || left;
var L:int;
var C:int;
var Ls:int;
var Cs:int;
var A:Object;
var B:Object;
var Y:Number;
var P:Array;
with (grid)
{
x += sens;
L = y;
C = x;
Ls = (y - 1);
Cs = (x + sens);
}
}
function pushin(event:KeyboardEvent):void
{
if (event.keyCode == 38)
{
up = true;
}
if (event.keyCode == 40)
{
down = true;
}
if (event.keyCode == 39)
{
right = true;
}
if (event.keyCode == 37)
{
left = true;
}
paramMap();
trace(grid.x, grid.y);
}
function pushout(event:KeyboardEvent):void
{
if (event.keyCode == 38)
{
up = false;
}
if (event.keyCode == 40)
{
down = false;
}
if (event.keyCode == 39)
{
right = false;
}
if (event.keyCode == 37)
{
left = false;
}
}
你能澄清一下是什么问题吗?“它在运行,但键盘”并没有给出任何关于你们期望和发生了什么的线索。事实上。。。很抱歉,当我启动.swf Flash时没有注意到错误,因此,对于Flash,它可以工作,但是,当我尝试用键盘移动“网格”时,它无法工作…首先,我的网格不再显示,但Flash out window会通知我层“虚拟”移动(0 1 0 1 0 0 0 0 0)。谢谢,你给了我很大的帮助,但现在,我不知道如何在physic grid replacement上转换这些位置信息。你想做的是一个平铺游戏。这里有这样一个程序的教程:www.ironcoding.com/2011/02/flash-as3-tile-based-game-tutorial-pt-1-intro/实际上,不,我想做一个类似马里奥的游戏。。。打扰一下