2015-11-18 75 views
-1

今天花了6個小時從一個教程修改它爲我的元素,我一直在嘗試幾個小時才能使它工作,我不能:/我怎樣才能得到這個自頂向下的射手?

這是一個指向我的教程的鏈接以下:

http://www.filedropper.com/shooter_1

Raw Javascript Code: 
 

 
/* Variable Declarations */ 
 
var Lives = new Container(); //stores the lives gfx 
 
var Bullets = new Container(); //stores the bullets gfx 
 
var Enemies = new Container(); //stores the enemies gfx 
 
var Boss_Health = 20; 
 
var Score; 
 
var Gfx_Loaded = 0; //used as a preloader, counts the already loaded items 
 
var Center_X = 960; 
 
var Center_Y = 540; 
 
var Ticker_Listener = new Object(); //used as a Ticker listener 
 
var Timer_Source; //references a setInterval method 
 

 
/* Define Canvas*/ 
 
var canvas; 
 
var stage; 
 

 
/* Background */ 
 
var BG_Img = new Image(); 
 
var BG; 
 
var BG2_Img = new Image(); 
 
var BG2; 
 

 
/* Characters */ 
 
var Player1_Img = new Image(); 
 
var Player1; 
 

 
/* Enemies */ 
 
var Enemy1_Img = new Image(); 
 

 
/* Boss */ 
 
var Boss1_Img = new Image(); 
 
var Boss1; 
 

 
/* Lives */ 
 
var Life_Img = new Image(); 
 

 
/* Bullets */ 
 
var Bullet_Img1 = new Image(); 
 

 
/* Alerts */ 
 
var Win_Img = new Image(); 
 
var Lose_Img = new Image(); 
 
var Win; 
 
var Lose; 
 

 

 

 
/*Initiation Function*/ 
 
function Main() { 
 
canvas = document.getElementbyId('Shooter'); 
 
stage = new stage(canvas); 
 
stage.mouseEventsEnabled = true; 
 

 
/*Sounds*/ 
 

 
SoundJS.addBatch([ 
 
     {name:'Boss', src:'Boss.mp3', instances:1}, 
 
     {name:'Shuriken_Hit', src:'Shuriken_Hit.mp3', instances:10}, 
 
     {name:'Kunai_Throw', src:'Kunai_Throw.mp3', instances:10}]); 
 

 
\t \t 
 
/* Load GFX */ 
 
BG_Img.src = 'BG_Img.jpg'; 
 
BG_Img.name = 'BG'; 
 
BG_Img.onload = loadGfx; 
 
     
 
BG2_Img.src = 'BG2_Img.jpg'; 
 
BG2_Img.name = 'BG2'; 
 
BG2_Img.onload = loadGfx; 
 
     
 
Player1_Img.src = 'Naruto_Idle.gif'; 
 
Player1_Img.name = 'Player1'; 
 
Player1_Img.onload = loadGfx; 
 
    
 
Enemy1_Img.src = 'Basic_Enemy.gif'; 
 
Enemy1_Img.name = 'Enemy1'; 
 
Enemy1_Img.onload = loadGfx; 
 
    
 
Boss1_Img.src = 'Akatsuki_Boss.gif'; 
 
Boss1_Img.name = 'Boss1'; 
 
Boss1_Img.onload = loadGfx; 
 
    
 
Life_Img.src = 'Life.gif'; 
 
Life_Img.name = 'Life'; 
 
Life_Img.onload = loadGfx; 
 
    
 
Bullet_Img1.src = 'Rasengan_Mid_Air.gif'; 
 
Bullet_Img1.name = 'Bullet'; 
 
Bullet_Img1.onload = loadGfx; 
 
    
 
Win_Img.src = 'Game_Win.gif'; 
 
Win_Img.name = 'Game_Win'; 
 
Win_Img.onload = loadGfx; 
 
    
 
Lose_Img.src = 'Game_Over.gif'; 
 
Lose_Img.name = 'Game_Over'; 
 
Lose_Img.onload = loadGfx; 
 

 
/* Ticker */ 
 
    
 
Ticker.setFPS(30); 
 
Ticker.addListener(stage); 
 

 

 
} 
 

 

 

 
/*Preload Function */ 
 

 
function loadGfx(e) 
 
{ 
 
    if(e.target.name = 'BG'){BG = new Bitmap(BG_Img);} 
 
    if(e.target.name = 'BG2'){BG2 = new Bitmap(BG2_Img);} 
 
    if(e.target.name = 'Player1'){Player1 = new Bitmap(Player1_Img);} 
 
     
 
    gfxLoaded++; 
 
     
 
    if(gfxLoaded == 9) 
 
    { 
 
     addGameView(); 
 
    } 
 
} 
 

 
/* Game View Function */ 
 

 
function addGameView() 
 
{ 
 
    Player1.x = Center_X - 18.5; 
 
    Player1.y = 480 + 34; 
 
     
 
    /* Add Lives */ 
 
     
 
    for(var i = 0; i < 3; i++) 
 
    { 
 
     var l = new Bitmap(Life_Img); 
 
      
 
     l.x = 248 + (25 * i); 
 
     l.y = 463; 
 
      
 
     Lives.addChild(l); 
 
     stage.update(); 
 
    } 
 
     
 
    /* Score Text */ 
 
     
 
    Score = new Text('0', 'bold 14px Courier New', '#FFFFFF'); 
 
    Score.maxWidth = 1000; //fix for Chrome 17 
 
    Score.x = 2; 
 
    Score.y = 476; 
 
     
 
    /* Second Background */ 
 
     
 
    BG2.y = -480; 
 
     
 
    /* Add gfx to stage and Tween Ship */ 
 
     
 
    stage.addChild(BG, BG2, Player1, Enemies, Bullets, Lives, Score); 
 
    Tween.get(Player1).to({y:425}, 1000).call(Start_Game); 
 
} 
 

 
/*Move the Player*/ 
 

 
function Move_Player1(e) 
 
{ 
 
    Player1.x = e.stageX - 18.5; 
 
} 
 

 
/* Shooting */ 
 

 
function Shoot() 
 
{ 
 
    var b = new Bitmap(Bullet_Img1); 
 
     
 
    b.x = Player1.x + 13; 
 
    b.y = Player1.y - 20; 
 
     
 
    Bullets.addChild(b); 
 
    stage.update(); 
 
     
 
    SoundJS.play('Kunai_Throw'); 
 
} 
 

 
/* Adding Enemies */ 
 

 
function Add_Enemy() 
 
{ 
 
\t var e = new Bitmap(Enemy1_Img); 
 
\t 
 
\t e.x = Math.floor(Math.random() * (320-50)) 
 
\t e.y = -50 
 
\t 
 
\t Enemies.addChild(e); 
 
\t stage.update(); 
 
} 
 

 
function Start_Game() 
 
{ 
 
    stage.onMouseMove = Move_Player1; 
 
    BG.onPress = Shoot; 
 
    BG2.onPress = Shoot; 
 
     
 
    Ticker.addListener(Ticker_Listener, false); 
 
    Ticker_Listener.tick = update; 
 
    Timer_Source = setInterval('addEnemy()', 1000); 
 
} 
 

 
function update() 
 
{ 
 
/* Move Background */ 
 
     
 
    BG.y += 5; 
 
    BG2.y += 5; 
 
     
 
    if(BG.y >= 480) 
 
    { 
 
     BG.y = -480; 
 
    } 
 
    else if(BG2.y >= 480) 
 
    { 
 
     BG2.y = -480; 
 
    } 
 

 
/* Move Bullets */ 
 
     
 
    for(var i = 0; i < Bullets.children.length; i++) 
 
    { 
 
     Bullets.children[i].y -= 10; 
 
    } 
 
\t 
 
/* Clear offstage Bullets */ 
 

 
if(Bullets.children[i].y < - 20) 
 
     { 
 
      Bullets.removeChildAt(i); 
 
     } 
 
    } 
 
\t 
 
/* Show Boss */ 
 
     
 
    if(parseInt(Score.text) >= 1000 && Boss1 == null) 
 
    { 
 
     Boss1 = new Bitmap(Boss1_Img); 
 
        
 
     SoundJS.play('Boss'); 
 
        
 
     Boss1.x = Center_X - 90; 
 
     Boss1.y = -183; 
 
        
 
     stage.addChild(boss1); 
 
     Tween.get(boss1).to({y:40}, 2000) //tween the boss onto the play area 
 
    } 
 
\t 
 
/* Move Enemies */ 
 
\t 
 
\t for(var j = 0; j < Enemies.children.length; j++) 
 
    { 
 
     eEemies.children[j].y += 5; 
 
      
 
     /* Remove Offstage Enemies */ 
 
      
 
     if(Enemies.children[j].y > 480 + 50) 
 
     { 
 
      Enemies.removeChildAt(j); 
 
     } 
 
\t } 
 
\t \t 
 
/* Bullet - Enemy Collision */ 
 

 
for(var k = 0; k < Bullets.children.length; k++) 
 
{  
 
    if(Bullets.children[k].x >= Enemies.children[j].x && Bullets.children[k].x + 11 < Enemies.children[j].x + 49 && Bullets.children[k].y < Enemies.children[j].y + 40) 
 
    { 
 
     Bullets.removeChildAt(k); 
 
     Enemies.removeChildAt(j); 
 
     stage.update(); 
 
     SoundJS.play('Shuriken_Hit'); 
 
     Score.text = parseFloat(Score.text + 50); 
 
    } 
 
\t 
 
/* Bullet - Boss Collision */ 
 
       
 
    if(Boss1 != null && bullets.children[k].x >= Boss1.x && Bullets.children[k].x + 11 < Boss1.x + 183 && Bullets.children[k].y < Boss1.y + 162) 
 
    { 
 
     Bullets.removeChildAt(k); 
 
     Boss_Health--; 
 
     stage.update(); 
 
     SoundJS.play('Shuriken_Hit'); 
 
     Score.text = parseInt(Score.text + 50); 
 
    } 
 
} 
 

 
/* Player1 - Enemy Collision */ 
 
      
 
    if(Enemies.hitTest(Player1.x, Player1.y) || Enemies.hitTest(Player1.x + 37, Player1.y)) 
 
    { 
 
     Enemies.removeChildAt(j); 
 
     Lives.removeChildAt(Lives.length); 
 
     Player1.y = 480 + 34; 
 
     Tween.get(Player1).to({y:425}, 500) 
 
     SoundJS.play('Shuriken_Hit'); 
 
    } 
 
\t 
 
/* Check for win */ 
 
     
 
    if(Boss1 != null && Boss_Health <= 0) 
 
    { 
 
     alert('Win'); 
 
    } 
 
     
 
    /* Check for lose */ 
 
     
 
    if(Lives.children.length <= 0) 
 
    { 
 
     alert('Lose'); 
 
    } 
 

 
function alert(e) 
 
{ 
 
    /* Remove Listeners */ 
 
      
 
    stage.onMouseMove = null; 
 
    BG.onPress = null; 
 
    BG2.onPress = null; 
 
     
 
    Ticker.removeListener(Ticker_Listener); 
 
    Ticker_Listener = null; 
 
     
 
    Timer_Source = null; 
 
     
 
    /* Display Correct Message */ 
 
     
 
    if(e == 'Win') 
 
    { 
 
     Win = new Bitmap(Win_Img); 
 
     Win.x = centerX - 64; 
 
     Win.y = centerY - 23; 
 
     stage.addChild(Win); 
 
     stage.removeChild(Enemies, Boss1); 
 
    } 
 
    else 
 
    { 
 
     Lose = new Bitmap(Lose_Img); 
 
     Lose.x = centerX - 64; 
 
     Lose.y = centerY - 23; 
 
     stage.addChild(Lose); 
 
     stage.removeChild(Enemies, Player1); 
 
    } 
 
     
 
    BG.onPress = function(){window.location.reload();}; 
 
    BG2.onPress = function(){window.location.reload();}; 
 
    stage.update(); 
 
}
Raw HTML Code: 
 
<!doctype html> 
 
<html> 
 
\t <head> 
 
\t \t <title>Scrolling Shooter</title> 
 
\t \t <meta charset="utf-8"> 
 
\t \t <style>*{-webkit-tap-highlight-color: rgba(0, 0, 0, 0);}</style> 
 
     \t \t <link rel="stylesheet" href="Week11.css"> 
 
\t \t \t 
 
\t \t <script src="https://code.createjs.com/easeljs-0.8.1.min.js"></script> 
 
\t \t <script src="https://code.createjs.com/tweenjs-0.6.1.min.js"></script> 
 
\t \t <script src="https://code.createjs.com/soundjs-0.6.1.min.js"></script> 
 
\t \t 
 
\t </head> 
 
\t 
 
\t 
 
\t 
 
\t 
 
\t <body onload="Main();"> 
 
\t \t <div id="stage"> 
 
\t \t \t <canvas id= "Shooter"> width="1920" height="1080" </canvas> 
 
\t \t </div> 
 
\t \t 
 
\t \t <script src="Main.js"> </script> 
 
\t \t 
 
\t </body> 
 
</html>

http://gamedevelopment.tutsplus.com/tutorials/create-a-simple-space-shooter-game-in-html5-with-easeljs--active-10944

的所有文件,包括GIF格式等的郵編

+2

但你不要爲告訴我們,沒有運行的代碼......而第一個代碼塊被錯誤標記:這不是HTML。 –

+0

修復了文本字段中的錯誤,代碼的問題是我只是不知道爲什麼它沒有運行。在這一點上,它絆倒了一堆的錯誤,我只是失去了自由。 –

+0

@CassiusFragomeni你會得到哪些錯誤(相應地編輯你的答案)? – OddDev

回答

2

您正在使用的教程非常過時(它使用的是3至4歲的CreateJS版本)。 EaselJS的版本,您使用的是樣品中發表在五月2015年

首先,所有CreateJS類(如容器)需要使用createjs命名空間:

Player1 = new createjs.Bitmap(Player1_Img); 
Score = new createjs.Text('0', 'bold 14px Courier New', '#FFFFFF'); 

行情指示器API有也改變了:

createjs.Ticker.addEventListener("tick", stage); 
// OR 
createjs.Ticker.on("tick", stage); 

還有其他API已經改變(例如,BitmapAnimation成爲Sprite)。

我會從那裏開始,然後在您取得一些進展後跟進。使用您的控制檯確定發生了什麼錯誤,並逐個解決它們。

乾杯,

+0

好的,所以教程中的圖書館已經過時了......這讓人非常感慨。我有一切都像嘖嘖,但它不工作。 所以我改變了我的行股票代碼爲 Ticker.setFPS(30); createjs.Ticker.addEventListener(「tick」,stage); 和你在說我到處都有一個新的圖像();它需要是新的createjs.Image();? 此外,位圖變化意味着無處不在我有我需要的字位圖我需要替代它爲雪碧 –

+0

圖像只是HTML,所以你可以離開這些孤單。我看到的例子是Ticker,Container,Bitmap和Text。請隨時查閱http://createjs.com/docs上的文檔。 SoundJS'addBatch'也是過時的(參見http://createjs.com/docs/soundjs/classes/Sound.html#method_registerSounds)。我建議PreloadJS管理所有資產(包括音頻)的預加載。 – Lanny