2
我有一個問題,試圖讓我們班的主角「平臺遊戲」(現在它只是一個箭頭)跳進拱門。我試圖在開關內部設置一個if函數,這樣如果同時按下右箭頭鍵和跳轉按鈕,玩家就會跳到右側。然而,它只是直線上升。任何幫助?這裏是我的代碼:Javascript帆布拱形跳躍
var left = 37;
var up = 38;
var right = 39;
var down = 40;
var rightpress = false;
var jumppress = false;
var leftpress = false;
var CanHeight = 400;
var CanWidth = 800;
var BackgroundX = 00;
var BackgroundY = 00;
var ArrowMove = 0;
PreGame();
function preLoadImage(url)
{
image = new Image();
image.src = url;
image.onload = function()
{
return; // return image - image was empty made global
};
}
function PreGame()
{
preLoadImage ("pics/arrowright.png");
ArrowRightImg = image;
preLoadImage ("pics/Background1.png");
FirstBackgroundImg = image;
}
function InitGame()
{
SetCanvas('classified');
DrawScene();
//canvas.addEventListener("mousedown", doMouseDown, false);
//window.addEventListener("rightarrow", onrightarrow, false);
// Use the code below for perhaps a custom mouse cursor
//canvas.addEventListener("mouseover", doMouseOver, false);
Loop();
}
function SetCanvas(id)
{
canvas = document.createElement('canvas');
var div = document.getElementById(id);
canvas.width = CanWidth;
canvas.height = CanHeight;
canvas.style.position = "absolute";
canvas.style.border = "#222222 5px solid";
div.appendChild(canvas);
Context = canvas.getContext("2d");
}
function DrawScene()
{
Context.fillStyle = 'green';
if (ArrowMove == 0)
{
Context.drawImage(FirstBackgroundImg, BackgroundX, BackgroundY, 1600, 800);
}
Context.drawImage(ArrowRightImg, 400, 325);
}
/*function doMouseDown(event)
{
canvas_x = event.pageX;
canvas_y = event.pageY;
}*/
var PlayerJump = 0;
var counter = 0;
var PJ = false;
function jump()
{
--counter;
console.log("You Jump: " + PlayerJump);
if (PJ == true)
{
++PlayerJump;
if(PlayerJump <= 12)
{
OldBackgroundY = BackgroundY;
BackgroundY = BackgroundY + 5;
Context.drawImage(FirstBackgroundImg, BackgroundX, BackgroundY, 1600, 800);
}
if (PlayerJump >= 13 && PlayerJump <= 24)
{
BackgroundY = BackgroundY - 5;
Context.drawImage(FirstBackgroundImg, BackgroundX, BackgroundY, 1600, 800);
}
Context.drawImage(ArrowRightImg, 400, 325);// left
if (PlayerJump >= 25)
{
PlayerJump = 0;
PJ = false;
}
DrawScene();
}
}
document.onkeydown = function(e)
{
e = e || window.event;
switch(e.which || e.keyCode)
{
case 37:
Context.fillStyle = 'green';
console.log("You move left");
OldBackgroundX = BackgroundX;
BackgroundX = BackgroundX + 20;
Context.drawImage(FirstBackgroundImg, BackgroundX, BackgroundY, 1600, 800);
Context.drawImage(ArrowRightImg, 400, 325);// left
Context.fillText("You move left.", 200, 100);
break;
document.onkeypress = function(event)
{
event = event || window.event;
switch(event.which || event.keyCode)
{
case 38:
jumppress = true;
if (jumppress == true)
{
PJ = true;
}
if (PlayerJump >= 1 && PlayerJump < 24)
{
rightpress = false;
}
// up/jump
break;
case 39:
rightpress = true;
if (rightpress == true)
{
console.log("You move right");
Context.fillStyle = 'green';
OldBackgroundX = BackgroundX;
BackgroundX = BackgroundX - 20;
Context.drawImage(FirstBackgroundImg, BackgroundX, BackgroundY, 1600, 800);
Context.drawImage(ArrowRightImg, 400, 325);// right
Context.fillText("You move right.", 200, 100);
rightpress = false;
}
break;
}
if (rightpress == true && jumppress == true)
{
//case 39:
console.log("You jump right");
Context.fillStyle = 'green';
OldBackgroundX = BackgroundX;
BackgroundX = BackgroundX - 20;
PJ = true;
Context.drawImage(FirstBackgroundImg, BackgroundX, BackgroundY, 1600, 800);
Context.drawImage(ArrowRightImg, 400, 200);// right
//Context.fillText("You move right.", 200, 100);
//break;
//case 38:
if (PlayerJump <= 24)
{
PJ = false;
jumppress = false;
rightpress = false;
}
}
}
function UpDate()
{
if (PJ == true)
{
jump();
}
//--counter;
//console.log("Updated");
//DrawScene();*/
}
var lastTime = 0;
var ticks = 0;
function Loop()
{
var now = Date.now();
dt = (now - lastTime)/1000.0;
//console.log("fired rocket");
UpDate(); // UPDATE ALL THE GAME MOVES
//EnemyUpDate();
lastTime = now;
requestAnimFrame(Loop); // LOOP CALLBACK
};
var requestAnimFrame =
(
function()
{
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(callback)
{
window.setTimeout(callback, 1000/60);
};
}
)();