我是新的地铁风格的编程,所以我遵循这里的使用createJS的游戏http://www.sitepoint.com/creating-a-simple-windows-8-game-with-javascript-game-basics-createjseaseljs/的教程。下面是代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>game</title>
<!-- WinJS references -->
<link href="//Microsoft.WinJS.1.0.RC/css/ui-dark.css" rel="stylesheet" />
<script src="//Microsoft.WinJS.1.0.RC/js/base.js"></script>
<script src="//Microsoft.WinJS.1.0.RC/js/ui.js"></script>
<!-- game references -->
<link href="/css/default.css" rel="stylesheet" />
<script src="/js/default.js"></script>
<script src="/js/CreateJS/easeljs-0.5.0.min.js"></script>
<script src="/js/CreateJS/preloadjs-0.2.0.min.js"></script>
</head>
<body>
<canvas id="gameCanvas"></canvas>
</body>
</html>下面是javascript代码
// For an introduction to the Blank template, see the following documentation:
// http://go.microsoft.com/fwlink/?LinkId=232509
(function () {
"use strict";
var app = WinJS.Application;
var activation = Windows.ApplicationModel.Activation;
WinJS.strictProcessing();
function initialize() {
canvas = document.getElementById("gameCanvas");
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
context = canvas.getContext("2d");
preload = new PreloadJS();
preload.onComplete = prepareGame;
var manifest = [
{ id: "screenImage", src: "images/Backgrounds/gameplay_screen.png" },
{ id: "redImage", src: "images/Catapults/Red/redIdle/redIdle.png" },
{ id: "blueImage", src: "images/Catapults/Blue/blueIdle/blueIdle.png" },
{ id: "ammoImage", src: "images/Ammo/rock_ammo.png" },
{ id: "winImage", src: "images/Backgrounds/victory.png" },
{ id: "loseImage", src: "images/Backgrounds/defeat.png" },
{ id: "blueFire", src: "images/Catapults/Blue/blueFire/blueCatapult_fire.png" },
{ id: "redFire", src: "images/Catapults/Red/redFire/redCatapult_fire.png" },
];
preload.loadManifest(manifest);
stage = new Stage(canvas);
}
function prepareGame() {
bgImage = preload.getResult("screenImage").result;
bgBitmap = new Bitmap(bgImage);
bgBitmap.scaleX = SCALE_X;
bgBitmap.scaleY = SCALE_Y;
stage.addChild(bgBitmap);
stage.update();
}
function gameLoop() {
}
function update() {
}
function draw() {
}
var canvas, context, stage;
var bgImage, p1Image, p2Image, ammoImage, p1lives, p2lives, title, endGameImage;
var bgBitmap, p1Bitmap, p2Bitmap, ammoBitmap;
var preload;
// Current Display Factor. Because the orignal assumed a 800x480 screen
var SCALE_X = window.innerWidth / 800;
var SCALE_Y = window.innerHeight / 480;
var MARGIN = 25;
var GROUND_Y = 390 * SCALE_Y;
app.onactivated = function (args) {
if (args.detail.kind === activation.ActivationKind.launch) {
if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) {
// TODO: This application has been newly launched. Initialize
// your application here.
} else {
// TODO: This application has been reactivated from suspension.
// Restore application state here.
}
args.setPromise(WinJS.UI.processAll());
}
};
app.oncheckpoint = function (args) {
// TODO: This application is about to be suspended. Save any state
// that needs to persist across suspensions here. You might use the
// WinJS.Application.sessionState object, which is automatically
// saved and restored across suspension. If you need to complete an
// asynchronous operation before your application is suspended, call
// args.setPromise().
};
document.addEventListener("DOMContentLoaded", initialize, false);
app.start();
})();现在的问题是,每当我试图编译代码时,它给我的预加载是未定义的错误。我不明白的原因,我已经包括在HTML脚本和我的项目文件。谁能帮帮我这个问题在过去的一个小时里一直困扰着我,我只想做一个简单的游戏。
发布于 2012-10-27 06:40:25
原因是这些库被放在"createjs“名称空间下。为了实例化PreloadJS对象,请执行以下操作:
var preload = new createjs.PreloadJS();这应该会让你回到快乐的道路上。
发布于 2013-03-01 12:17:12
( 2013年2月试用,在PreloadJS 0.3.0发布后)
我刚刚尝试了sitepoint.com (http://www.sitepoint.com/creating-a-simple-windows-8-game-with-javascript-game-basics-createjseaseljs/)的教程,使用的是最新版本的EaselJS和PreloadJS,但一开始我无法让代码正常运行。
新版本的PreloadJS (v0.3.0)已将旧的PreloadJS类重命名为LoadQueue。
请参阅以下链接中的文档:
但是,在使用v0.3.0的同时简单地使用新类并不能修复项目。新版本有额外的不兼容性(例如,image.width无效),这可能可以通过反复试验来修复。
我不得不下载旧版的PreloadJS v0.2.0:
简而言之::如果我使用SitePoint教程,我必须坚持使用PreloadJS v0.2.0并使用createjs命名空间。
注意:前面响应中提到的示例项目也不起作用,因为它的WinJS引用无效。手动添加引用似乎也不起作用。
发布于 2012-10-22 00:18:20
在超文本标记语言中,将你的default.js移到preloadjs & easel代码之后。
这是因为包含的顺序对JavaScript很重要
https://stackoverflow.com/questions/12996137
复制相似问题