Advertisement
  1. Game Development

Erstellung eines einfaches Space-Shooter-Spiel in HTML5 mit EaselJS

Scroll to top
Read Time: 15 min
This post is part of a series called Shoot-'Em-Up.
An Introduction to FlashPunk: Creating a Spaceship Shoot-'Em-Up
Build a Stage3D Shoot-'Em-Up: Sprite Test

() translation by (you can also view the original English article)

Letztes Jahr habe ich Ihnen gezeigt, wie man mit Flash und AS3 ein Shoot-Em-Up-Spiel erstellt. Angesichts der zunehmenden Beliebtheit (und Funktionen) von HTML5 werfen wir einen Blick darauf, wie Sie dasselbe mit HTML5, JavaScript und EaselJS tun können.


Vorschau des endgültigen Bildes

Werfen wir einen Blick auf das Endergebnis, auf das wir hinarbeiten werden:

Klicken Sie hier, um die Demo abzuspielen.


Schritt 1: Kurze Übersicht

Mit vorgefertigten Sprites werden wir ein unterhaltsames Space Shooter-Spiel in HTML5 mithilfe der EaselJS-Bibliothek codieren.

Der Spieler kann ein Raumschiff steuern und mehrere Feinde erschießen, während er im Weltraum unterwegs ist.


Schritt 2: Interface

Es wird eine einfache und futuristische Oberfläche verwendet, die Bitmaps und mehr umfasst. Ich habe in der Demo dieses Tutorials eine großartige Sprite-Bibliothek verwendet. Diese sind Teil der kostenlosen Sinistar Clone Graphics.

Die für dieses Tutorial erforderlichen Schnittstellenressourcen finden Sie im angehängten Download.


Schritt 3: Bekommen Sie EaselJS

Die EaselJS-Bibliothek wird zum Erstellen unseres Spiels verwendet. Lesen Sie unbedingt das Tutorial Erste Schritte, wenn Sie neu in dieser Bibliothek sind.

Sie können EaselJS von der offiziellen Website herunterladen.


Schritt 4: HTML-Struktur

Lassen Sie uns unser HTML-Dokument vorbereiten. Es ist eine einfache HTML-Struktur, um mit dem Schreiben unserer App zu beginnen. Speichern Sie dies als Shooter.html.

1
 
2
<!DOCTYPE html> 
3
<html> 
4
	<head> 
5
		<title>Shooter</title> 
6
	</head> 
7
	<body> 
8
	</body> 
9
</html>

Schritt 5: Mobile Hightlight ausblenden

Fügen wir auch ein wenig CSS hinzu. In dieser Zeile wird die Standardhervorhebung entfernt, wenn Sie mit einem mobilen Browser auf ein Element tippen. Ohne dies würde das mobile Erlebnis drastisch abnehmen.

1
 
2
<!DOCTYPE html> 
3
<html> 
4
	<head> 
5
		<title>Shooter</title> 
6
		 
7
		<style>*{-webkit-tap-highlight-color: rgba(0, 0, 0, 0);}</style> 
8
	 
9
	</head> 
10
	<body> 
11
	</body> 
12
</html>

Schritt 6: JavaScript-Bibliotheken

Der folgende Code fügt die erforderlichen JavaScript-Bibliotheken hinzu, die für die Funktion unserer App erforderlich sind.

1
 
2
<!DOCTYPE html> 
3
<html> 
4
	<head> 
5
		<title>Shooter</title> 
6
		 
7
		<style>*{-webkit-tap-highlight-color: rgba(0, 0, 0, 0);}</style> 
8
 
9
		<script src="easel.js"></script> 
10
		<script src="Tween.js"></script> 
11
		<script src="sound.js"></script> 
12
		<script src="Main.js"></script> 
13
	</head> 
14
	<body> 
15
	</body> 
16
</html>

Main.js ist die Datei, in der wir alle unsere eigenen Funktionen für das Spiel speichern. Erstellen Sie es jetzt und speichern Sie es im selben Ordner wie Shooter.html. Sie müssen auch die aufgelisteten EaselJS-Bibliotheken herunterladen.


Schritt 7: Hauptfunktion aufrufen

In den nächsten Zeilen nennen wir unsere Hauptfunktion; Dies ist die Funktion, mit der unsere Anwendung gestartet wird. Sie wird später in unserem JavaScript-Code erstellt.

1
 
2
<!DOCTYPE html> 
3
<html> 
4
	<head> 
5
		<title>Shooter</title> 
6
		 
7
		<style>*{-webkit-tap-highlight-color: rgba(0, 0, 0, 0);}</style> 
8
 
9
		<script src="easel.js"></script> 
10
		<script src="Tween.js"></script> 
11
		<script src="sound.js"></script> 
12
		<script src="Main.js"></script> 
13
 
14
	</head> 
15
	<body onload="Main();"> 
16
	</body> 
17
</html>

Schritt 8: Leinwandelement

Die Leinwand wird in dieser Zeile hinzugefügt. Wir weisen eine ID zu, um später darauf zu verweisen, und legen auch deren Breite und Höhe fest.

1
 
2
<!DOCTYPE html> 
3
<html> 
4
	<head> 
5
		<title>Shooter</title> 
6
		 
7
		<style>*{-webkit-tap-highlight-color: rgba(0, 0, 0, 0);}</style> 
8
 
9
		<script src="easel.js"></script> 
10
		<script src="Tween.js"></script> 
11
		<script src="sound.js"></script> 
12
		<script src="Main.js"></script> 
13
 
14
	</head> 
15
	<body onload="Main();"> 
16
		<canvas id="Shooter" width="320" height="480"></canvas> 
17
	</body> 
18
</html>

Schritt 9: Starten des JavaScript

Beginnen wir mit der Erstellung unseres Spiels!

Öffnen Sie Ihren bevorzugten JavaScript-Editor (jeder Texteditor funktioniert, aber Sie haben keine Syntaxhervorhebung) und bereiten Sie sich darauf vor, Ihr fantastisches Spiel zu schreiben. Öffnen Sie die zuvor erstellte Datei Main.js.


Schritt 10: Leinwand definieren

Zunächst definieren wir alle grafischen und logischen Variablen.

Die nächsten Variablen repräsentieren das HTML-Canvas-Element und die Stufe, die damit verknüpft wird. (Die stage-Variable verhält sich ähnlich wie die Stage in einem AS3 Flash-Projekt.)

1
 
2
/* Define Canvas */ 
3
 
4
var canvas; 
5
var stage;

Schritt 11: Hintergrund

Die nächsten Variablen speichern die Hintergrundbilder. Zwei gekachelte Bilder werden verwendet, um einen unendlich scrollenden Hintergrund zu erstellen.

1
 
2
/* Background */ 
3
 
4
var bgImg = new Image(); 
5
var bg; 
6
var bg2Img = new Image(); 
7
var bg2;

Schritt 12: Versenden

Dies ist das Schiff, das als Spielercharakter oder Held verwendet wird.

1
 
2
/* Ship */ 
3
 
4
var sImg = new Image(); 
5
var ship;

Schritt 13: Feind

Mehrere Feinde werden auf der Bühne sein; Sie werden dies als Quellgrafik verwenden.

1
 
2
/* Enemy */ 
3
 
4
var eImg = new Image();

Schritt 14: Boss

Ein Boss wird im Spiel anwesend sein, größer und mit mehr Gesundheit als die anderen Feinde. Diese Variablen werden verwendet, um es zu instanziieren.

1
 
2
/* Boss */ 
3
 
4
var bImg = new Image(); 
5
var boss;

Schritt 15: Leben

Das "Leben"-Icon. Zu Beginn werden drei Leben gegeben, und Sie verlieren eines, wenn Sie von einem Feind getroffen werden.

1
 
2
/* Lives */ 
3
 
4
var lImg = new Image();

Schritt 16: Kugeln

Dies ist Ihre Waffe: Feuern Sie Kugeln auf die Feinde ab, um sie zu töten. Diese Variable speichert das Quellbild.

1
 
2
/* Bullets */ 
3
 
4
var bltImg = new Image();

Schritt 17: Warnungsgrafiken

Im Spiel werden zwei Warnungen verwendet, eine für den Fall, dass Sie gewinnen, und eine für den Fall, dass Sie verlieren. Wir werden später in diesem Tutorial sehen, wie Sie einen Gewinn oder eine Niederlage feststellen können.

1
 
2
/* Alert */ 
3
 
4
var winImg = new Image(); 
5
var loseImg = new Image(); 
6
var win; 
7
var lose;

Schritt 16: Variablen

Dies sind die Variablen, die wir verwenden werden. Lesen Sie die Kommentare im Code, um mehr darüber zu erfahren. Einige ihrer Namen sind selbsterklärend und haben daher keine Kommentare.

1
 
2
var lives = new Container(); //stores the lives gfx 

3
var bullets = new Container(); //stores the bullets gfx 

4
var enemies = new Container(); //stores the enemies gfx 

5
var bossHealth = 20; 
6
var score; 
7
var gfxLoaded = 0; //used as a preloader, counts the already loaded items 

8
var centerX = 160; 
9
var centerY = 240; 
10
var tkr = new Object(); //used as a Ticker listener 

11
var timerSource; //references a setInterval method

Schritt 17: Sounds

Wir werden Soundeffekte verwenden, um das Spielgefühl zu verbessern. Sie finden die in diesem Beispiel verwendeten Sounds auf Soungle.com mit den Schlüsselwörtern space, Explosion und Laser.


Schritt 18: Hauptfunktion

Die Funktion Main() wird als erste ausgeführt, wenn die Webseite geladen wird, da im Attribut onload des HTML-Dokuments darauf verwiesen wird (siehe Schritt 7).

Es ruft die notwendigen Funktionen auf, um das Spiel zu starten. Wir werden diese Funktionen in den nächsten Schritten erstellen - alles von Schritt 19 bis Schritt 23 sollte in diese Funktion gehören.

1
 
2
function Main() 
3
{ 
4
	//code... 

5
}

Schritt 19: Canvas verlinken

Dieser Code ruft die HTML-Canvas-ID ab und verknüpft sie mit der EaselJS Stage-Klasse. Dadurch verhält sich die Stage-Variable wie die Stage-Klasse in AS3.

1
 
2
/* Link Canvas */ 
3
	 
4
canvas = document.getElementById('Shooter'); 
5
stage = new Stage(canvas);

Schritt 20: Mausereignisse aktivieren

Mausereignisse sind in EaselJS standardmäßig deaktiviert, um die Leistung zu verbessern. Wenn wir diese im Spiel brauchen, fügen wir die folgende Zeile hinzu.

1
 
2
stage.mouseEventsEnabled = true;

Schritt 21: Sounds laden

Wir werden SoundJS verwenden, um unserem Spiel Sounds hinzuzufügen. Die addBatch-Methode von SoundJS verwendet für jeden Aufruf ein Array mit drei Parametern:

  • name: Der Instanzname, den der Sound haben soll - dieser wird verwendet, um den Sound später abzuspielen.
  • src: Die URL der Audiodatei.
  • instances: Die Anzahl der Instanzen, die gleichzeitig abgespielt werden können.
1
 
2
/* Sound */ 
3
 
4
SoundJS.addBatch([ 
5
		{name:'boss', src:'boss.mp3', instances:1}, 
6
		{name:'explo', src:'explo.mp3', instances:10}, 
7
		{name:'shot', src:'shot.mp3', instances:10}]);

Schritt 22: Laden Sie Grafiken

Dieser Code wird verwendet, um die Grafiken mithilfe einer Funktion vorzuladen, die wir später schreiben werden. Es zeigt jedes zuvor erstellte Bildobjekt auf die Quell-PNG-Datei in unserem Dokumentordner. Es wird ein Name vergeben, um zu erkennen, welches Bild geladen wird, und zuletzt wird die Funktion aufgerufen, die die geladenen Bilder verarbeitet.

1
 
2
/* Load GFX */ 
3
 
4
bgImg.src = 'bg.png'; 
5
bgImg.name = 'bg'; 
6
bgImg.onload = loadGfx; 
7
 	 
8
bg2Img.src = 'bg2.png'; 
9
bg2Img.name = 'bg2'; 
10
bg2Img.onload = loadGfx; 
11
 	 
12
sImg.src = 'ship.png'; 
13
sImg.name = 'ship'; 
14
sImg.onload = loadGfx; 
15
 
16
eImg.src = 'enemy1.png'; 
17
eImg.name = 'enemy'; 
18
eImg.onload = loadGfx; 
19
 
20
bImg.src = 'boss.png'; 
21
bImg.name = 'boss'; 
22
bImg.onload = loadGfx; 
23
 
24
lImg.src = 'live.png'; 
25
lImg.name = 'live'; 
26
lImg.onload = loadGfx; 
27
 
28
bltImg.src = 'bullet.png'; 
29
bltImg.name = 'bullet'; 
30
bltImg.onload = loadGfx; 
31
 
32
winImg.src = 'win.png'; 
33
winImg.name = 'win'; 
34
winImg.onload = loadGfx; 
35
 
36
loseImg.src = 'lose.png'; 
37
loseImg.name = 'lose'; 
38
loseImg.onload = loadGfx;

Schritt 23: Ticker einstellen

Die Ticker-Klasse bietet ein zentrales "tick", das in einem festgelegten Intervall gesendet wird. Wir können die Funktion tick() verwenden, um bestimmten Code regelmäßig auszuführen.

Der folgende Code setzt die Bildrate auf 30 und definiert die Bühne als Listener für die Ticks.

Die TweenJS-Klasse hört sich dieses Häkchen an, um die Animationen auszuführen.

1
 
2
/* Ticker */ 
3
 
4
Ticker.setFPS(30); 
5
Ticker.addListener(stage);

Schritt 24: Vorladefunktion

Jedes Mal, wenn eine Grafik geladen wird, wird diese Funktion ausgeführt. Jedes Bild wird einem Bitmap-Objekt zugewiesen und überprüft, ob alle Elemente geladen sind, bevor addGameView aufgerufen wird.

1
 
2
function loadGfx(e) 
3
{ 
4
	if(e.target.name = 'bg'){bg = new Bitmap(bgImg);} 
5
	if(e.target.name = 'bg2'){bg2 = new Bitmap(bg2Img);} 
6
	if(e.target.name = 'ship'){ship = new Bitmap(sImg);} 
7
	 
8
	gfxLoaded++; 
9
	 
10
	if(gfxLoaded == 9) 
11
	{ 
12
		addGameView(); 
13
	} 
14
}

Schritt 25: Spielansicht hinzufügen

Wenn alle Grafiken geladen sind, wird die Funktion addGameView aufgerufen. Diese Funktion fügt der Bühne das Schiff, den Lebenszähler, die Punktzahl und die Hintergründe hinzu.

1
 
2
function addGameView() 
3
{ 
4
	ship.x = centerX - 18.5; 
5
	ship.y = 480 + 34; 
6
	 
7
	/* Add Lives */ 
8
	 
9
	for(var i = 0; i < 3; i++) 
10
	{ 
11
		var l = new Bitmap(lImg); 
12
		 
13
		l.x = 248 + (25 * i); 
14
		l.y = 463; 
15
		 
16
		lives.addChild(l); 
17
		stage.update(); 
18
	} 
19
	 
20
	/* Score Text */ 
21
	 
22
	score = new Text('0', 'bold 14px Courier New', '#FFFFFF'); 
23
	score.maxWidth = 1000;	//fix for Chrome 17 

24
	score.x = 2; 
25
	score.y = 476; 
26
	 
27
	/* Second Background */ 
28
	 
29
	bg2.y = -480; 
30
	 
31
	/* Add gfx to stage and Tween Ship */ 
32
	 
33
	stage.addChild(bg, bg2, ship, enemies, bullets, lives, score); 
34
	Tween.get(ship).to({y:425}, 1000).call(startGame); 
35
}

Schritt 26: Schiff bewegen

Das Schiff des Spielers wird mausgesteuert und wir verwenden diese Funktion, um Folgendes zu handhaben:

1
 
2
function moveShip(e) 
3
{ 
4
	ship.x = e.stageX - 18.5; 
5
}

e.stageX bezieht sich auf die x-Koordinate der Maus, und diese Funktion wird aufgerufen, wenn sich die Maus bewegt.


Schritt 27: Shoot

Unser Schiff wird in der Lage sein, Kugeln abzuschießen, um sich selbst zu zerstören und vor Feinden zu schützen. Diese Funktion wird jedes Mal ausgeführt, wenn der Benutzer auf die Bühne klickt, und platziert eine Kugel vor dem Schiff, die später von der Funktion update() verschoben wird. Es wird auch ein Schießgeräusch abgespielt.

1
 
2
function shoot() 
3
{ 
4
	var b = new Bitmap(bltImg); 
5
	 
6
	b.x = ship.x + 13; 
7
	b.y = ship.y - 20; 
8
	 
9
	bullets.addChild(b); 
10
	stage.update(); 
11
	 
12
	SoundJS.play('shot'); 
13
}

Schritt 28: Feindfunktion hinzufügen

Es wäre kein Schütze ohne etwas zu schießen. Hier wird mit setInterval() alle 1000 Millisekunden ein Feind erstellt (diesen Wert können Sie im nächsten Schritt ändern), der später von der Funktion update() verschoben wird.

1
 
2
function addEnemy() 
3
{ 
4
	var e = new Bitmap(eImg); 
5
	 
6
	e.x = Math.floor(Math.random() * (320 - 50)) 
7
	e.y = -50 
8
	 
9
	enemies.addChild(e); 
10
	stage.update(); 
11
}

Schritt 29: Spiel starten

Diese Zeilen fügen der Bühne und dem Timer die erforderlichen Zuhörer hinzu. Dies umfasst Mausereignisse, zeitgesteuerte Ereignisse (über setInterval) und Ticker-Ereignisse, die das Spiel in jedem Frame aktualisieren.

1
 
2
function startGame() 
3
{ 
4
	stage.onMouseMove = moveShip; 
5
	bg.onPress = shoot; 
6
	bg2.onPress = shoot; 
7
	 
8
	Ticker.addListener(tkr, false); 
9
	tkr.tick = update; 
10
	 
11
	timerSource = setInterval('addEnemy()', 1000); 
12
}

Schritt 30: Hintergrund verschieben

Der Hintergrund wird in jedem Frame verschoben, um die Raumfahrt zu simulieren. Wenn das untere Hintergrund-Sprite die Stufengrenze erreicht, wird es wieder nach oben verschoben, wodurch eine Endlosschleife entsteht.

1
 
2
function update() 
3
{ 
4
	/* Move Background */ 
5
	 
6
	bg.y += 5; 
7
	bg2.y += 5; 
8
	 
9
	if(bg.y >= 480) 
10
	{ 
11
		bg.y = -480; 
12
	} 
13
	else if(bg2.y >= 480) 
14
	{ 
15
		bg2.y = -480; 
16
	}

Schritt 31: Kugeln verschieben

In den nächsten Codezeilen wird geprüft, ob sich Aufzählungszeichen in der Phase befinden. In diesem Fall werden die Kugeln nach oben bewegt.

1
 
2
/* Move Bullets */ 
3
	 
4
	for(var i = 0; i < bullets.children.length; i++) 
5
	{ 
6
		bullets.children[i].y -= 10; 
7
	}

Schritt 32: Entfernen Sie Offstage Bullets

Fügen wir einige Linien hinzu, um die Position des Geschosses zu ermitteln, und verwenden Sie diese, um ein Geschoss zu zerstören, wenn es nicht mehr sichtbar ist.

1
 
2
/* Move Bullets */ 
3
	 
4
	for(var i = 0; i < bullets.children.length; i++) 
5
	{ 
6
		bullets.children[i].y -= 10; 
7
		 
8
		/* Remove Offstage Bullets */ 
9
		 
10
		if(bullets.children[i].y < - 20) 
11
		{ 
12
			bullets.removeChildAt(i); 
13
		} 
14
	}

Schritt 33: Zeigen Sie Boss

Wir werden dem Spiel einen großen schlechten Boss hinzufügen. Wenn der Benutzer eine bestimmte Punktzahl erreicht, erscheint der Chef:

1
 
2
/* Show Boss */ 
3
	 
4
	if(parseInt(score.text) >= 500 && boss == null) 
5
	{ 
6
		boss = new Bitmap(bImg); 
7
				 
8
		SoundJS.play('boss'); 
9
				 
10
		boss.x = centerX - 90; 
11
		boss.y = -183; 
12
				 
13
		stage.addChild(boss); 
14
		Tween.get(boss).to({y:40}, 2000)   //tween the boss onto the play area 

15
	}

Schritt 34: Gegner bewegen

Die Feinde werden ebenso wie die Kugeln in jedem Bild bewegt. Dieser Code findet alle Feinde auf der Bühne mithilfe des enemies containers und bewegt sie jeweils 5 Pixel nach unten.

1
 
2
/* Move Enemies */ 
3
	 
4
	for(var j = 0; j < enemies.children.length; j++) 
5
	{ 
6
		enemies.children[j].y += 5;

Schritt 35: Entfernen Sie Gegner außerhalb der Bühne

Wir überprüfen auch die Positionen der Feinde, um sie zu zerstören, wenn sie nicht mehr sichtbar sind.

1
 
2
/* Move Enemies */ 
3
	 
4
	for(var j = 0; j < enemies.children.length; j++) 
5
	{ 
6
		enemies.children[j].y += 5; 
7
		 
8
		/* Remove Offstage Enemies */ 
9
		 
10
		if(enemies.children[j].y > 480 + 50) 
11
		{ 
12
			enemies.removeChildAt(j); 
13
		}

Schritt 36: Bullet - Enemy Collision

Die Kugeln im Container werden auf Kollision mit den Feinden getestet; In diesem Fall werden beide von der Bühne entfernt, ein Ton abgespielt und die Partitur aktualisiert.

1
 
2
for(var k = 0; k < bullets.children.length; k++) 
3
{ 
4
	/* Bullet - Enemy Collision */ 
5
	 
6
	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) 
7
	{ 
8
		bullets.removeChildAt(k); 
9
		enemies.removeChildAt(j); 
10
		stage.update(); 
11
		SoundJS.play('explo'); 
12
		score.text = parseFloat(score.text + 50); 
13
	}

Schritt 37: Bullet-Boss-Kollision

Der folgende Code behandelt die Bosskollisionen. Er verwendet dieselbe Methode wie die Kollisionsschleife zwischen Kugel und Feind. Hier verwenden wir die Variable bossHealth, um zu bestimmen, wann der Boss besiegt wird.

1
 
2
/* Bullet - Boss Collision */ 
3
			 
4
	if(boss != null && bullets.children[k].x >= boss.x && bullets.children[k].x + 11 < boss.x + 183 && bullets.children[k].y < boss.y + 162) 
5
	{ 
6
		bullets.removeChildAt(k); 
7
		bossHealth--; 
8
		stage.update(); 
9
		SoundJS.play('explo'); 
10
		score.text = parseInt(score.text + 50); 
11
	} 
12
}

Schritt 38: Schiff - Feindliche Kollision

Hier prüfen wir, ob ein Feind mit dem Schiff des Spielers kollidiert. Wenn dies der Fall ist, wird ein Ton abgespielt, ein Leben entfernt und das Schiff animiert.

1
 
2
/* Ship - Enemy Collision */ 
3
		 
4
	if(enemies.hitTest(ship.x, ship.y) || enemies.hitTest(ship.x + 37, ship.y)) 
5
	{ 
6
		enemies.removeChildAt(j); 
7
		lives.removeChildAt(lives.length); 
8
		ship.y = 480 + 34; 
9
		Tween.get(ship).to({y:425}, 500) 
10
		SoundJS.play('explo'); 
11
	} 
12
}

Schritt 39: Überprüfen Sie auf Gewinn oder Verlust

Der Spieler gewinnt, wenn der Boss seine ganze Gesundheit verliert und verliert, wenn sein ganzes Leben verloren geht. Die nächsten Zeilen erkennen diese Situationen und rufen eine Warnfunktion mit dem richtigen Parameter auf.

1
 
2
/* Check for win */ 
3
	 
4
	if(boss != null && bossHealth <= 0) 
5
	{ 
6
		alert('win'); 
7
	} 
8
	 
9
	/* Check for lose */ 
10
	 
11
	if(lives.children.length <= 0) 
12
	{ 
13
		alert('lose'); 
14
	} 
15
}

Schritt 40: Alarm

Der Alarm zeigt dem Spieler Informationen über den Status des Spiels an. Es wird angezeigt, wenn ein Spielereignis erreicht ist. Es entfernt die Spielelisten und zeigt die entsprechende Nachricht an.

1
 
2
function alert(e) 
3
{ 
4
	/* Remove Listeners */ 
5
		 
6
	stage.onMouseMove = null; 
7
	bg.onPress = null; 
8
	bg2.onPress = null; 
9
	 
10
	Ticker.removeListener(tkr); 
11
	tkr = null; 
12
	 
13
	timerSource = null; 
14
	 
15
	/* Display Correct Message */ 
16
	 
17
	if(e == 'win') 
18
	{ 
19
		win = new Bitmap(winImg); 
20
		win.x = centerX - 64; 
21
		win.y = centerY - 23; 
22
		stage.addChild(win); 
23
		stage.removeChild(enemies, boss); 
24
	} 
25
	else 
26
	{ 
27
		lose = new Bitmap(loseImg); 
28
		lose.x = centerX - 64; 
29
		lose.y = centerY - 23; 
30
		stage.addChild(lose); 
31
		stage.removeChild(enemies, ship); 
32
	} 
33
	 
34
	bg.onPress = function(){window.location.reload();}; 
35
	bg2.onPress = function(){window.location.reload();}; 
36
	stage.update(); 
37
}

Schritt 41: Testen



Speichern Sie Ihre Arbeit (falls nicht) und öffnen Sie die HTML-Datei im Browser, damit Ihr HTML5-Spiel funktioniert!


Abschluss

Sie haben gelernt, wie Sie ein Space Shooter-Spiel mit all seinen Grundfunktionen erstellen. Versuchen Sie, es mit dem zu erweitern, was Sie bereits wissen. Ein guter Anfang wäre, die Feinde oder den Boss auf den Spieler zurückschießen zu lassen.

Ich hoffe dir hat dieses Tutorial gefallen, danke fürs Lesen!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Game Development tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.