イム内のブロックの上に実行中... 私は、最初のゲームをexplaingます:あなたは一瞬の文字(黒です四角形)、落下しているブロックを飛び越えてできるだけ高くする必要があります。私が現時点でできることは、ジャンプしてブロック(左 - 右)と衝突し、ブロックにジャンプすることです。フラッシュAS3:、フラッシュのActionScript 3でゲームを作るほぼ完了が、私はいくつかの問題を持っている私のゲーム
2つのブロックがちょうど隣り合っているとき(ブロックAがブロックBの隣にあるとき)、ブロックAにジャンプしてブロックBにジャンプしたい(ジャンプしないで実行する)非常に奇妙な何か、私はブロック上を歩くことができません: 私は1週間以上を探していますが、まだ進歩はありません。だから私はここで何か助けを得ることができることを望む。ビジュアライゼーションなしで問題を説明するのは非常に難しいので、ファイルをアップロードして自分でテストできるようにしました。 ダウンロードリンク:http://www.megaupload.com/?d=JT4158KA
イムまだ初心者なので、ビット助けを得ることは素晴らしいことだ。..イムは、一週間以上のために、この時に立ち往生: ね私も先生に尋ね、彼はそれを解決することができませんでした。だから私はあなたたちは
役立つことを願っしかし、あなたは私の説明を理解し、および/または怠惰にされている場合は、私のファイル(17キロバイトの大:p)をダウンロードするにはここでの問題はあるべきコードがある
package Classes
{ import flash.events。*; import flash.display.MovieClip; import flash.display.Stage; import flash.ui.Keyboard; import Classes.KeyObject;
public class Player extends MovieClip
{
var isJumping:Boolean = false;
var jumpPower:int = 0;
var ground:int;
var stageRef:Stage;
var key:KeyObject;
var isDead:Boolean = false;
var allBlocks:Array;
var blockX:int;
var blockY:int;
var blockWidth:int;
var blockHeight:int;
var steps:int = 10;
var upPressed:Boolean = false;
public function Player(stageReff:Stage,allBlocks:Array)
{
stageRef = stageReff;
key = new KeyObject(stageRef);
this.allBlocks = allBlocks;
ground = stageRef.stageHeight;
addEventListener(Event.ENTER_FRAME,update);
//addEventListener(KeyboardEvent.KEY_UP, keyReleased);
}
function isHit()
{
for (var j = 0; j < allBlocks.length; j++)
{
if (this.hitTestObject(allBlocks[j]) && allBlocks[j] != isOnTopOf())
{
blockX = allBlocks[j].x;
blockY = allBlocks[j].y;
blockWidth = allBlocks[j].width;
blockHeight = allBlocks[j].height;
return true;
}
}
return false;
}
function isHitTop()
{
for (var j = 0; j < allBlocks.length; j++)
{
if (this.PlayerBottom.hitTestObject(allBlocks[j].hitBoxTop))
{
jumpPower = 0;
isJumping = false;
this.y = allBlocks[j].y - allBlocks[j].height;
return true;
}
}
return false;
}
function isHitBottom()
{
for (var j = 0; j<allBlocks.length; j++)
{
if (this.hitTestObject(allBlocks[j].hitBoxBottom))
{
if (isJumping)
{
this.y = allBlocks[j].y + this.height;
jumpPower=0;
isJumping = false;
isDead = false;
trace(isDead);
}
else
{
isDead = true;
trace(isDead);
}
}
}
}
function isOnTopOf()
{
for (var j = 0; j < allBlocks.length; j++)
{
if (this.PlayerBottom.hitTestObject(allBlocks[j].hitBoxTop))
{
trace("is WEL onTopOf");
return allBlocks[j];
}
}
trace("is NIET onTopOf");
return null;
}
function update(evt:Event):void
{
if (!isDead)
{
isHitTop();
isHitBottom();
if (key.isDown(Keyboard.UP))
{
//Voorkomen dat hij 2x springt
if (! isJumping)
{
jumpPower = 12;
isJumping = true;
}
}
if (key.isDown(Keyboard.LEFT))
{
if (this.x > stageRef.stageWidth - stageRef.stageWidth)
{
this.x -= steps;
if (isHit() == true)
{
this.x = blockX + blockWidth + 1;
//trace("is gehit maar staat er niet op");
}
}
}
else if (key.isDown(Keyboard.RIGHT))
{
if (this.x < stageRef.stageWidth - this.width)
{
this.x += steps;
if (isHit() == true)
{
this.x = blockX - this.width - 1;
this.y = blockY;
}
}
}
if (isJumping)
{
this.y -= jumpPower;
jumpPower -= 2;
isHitTop();
isHitBottom();
}
if (! isJumping && ! isHitTop())
{
this.y += 7;
}
if (this.y > ground)
{
this.y = ground;
isJumping = false;
}
}
else
{
removeEventListener(Event.ENTER_FRAME,update);
}
}
}
}