为什么不能在浏览器的 Phaser 中加载简单图像?
Why won't a simple image load in Phaser in the browser?
现在,我正在学习本教程:https://phaser.io/tutorials/making-your-first-phaser-3-game/index
我按照第一位进行了操作,得到了将 sky.png 渲染到浏览器中的部分,但我的浏览器总是以空白结尾。我什至只是试图打开他们完成的示例,但一片空白。我是否需要 运行 它作为服务器之类的?
我试过 npm install,也没用。
我遵循了这个教程:https://phaser.io/tutorials/making-your-first-phaser-3-game/index
它在 'Requirements' 下引用的 zip 文件不会加载 part1.html、part.html 等页面。
代码如下:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Making your first Phaser 3 Game - Part 3</title>
<script src="//cdn.jsdelivr.net/npm/phaser@3.11.0/dist/phaser.js"></script>
<style type="text/css">
body {
margin: 0;
}
</style>
</head>
<body>
<script type="text/javascript">
var config = {
type: Phaser.AUTO,
width: 800,
height: 600,
scene: {
preload: preload,
create: create,
update: update
}
};
var game = new Phaser.Game(config);
function preload ()
{
this.load.image('sky', 'assets/sky.png');
this.load.image('ground', 'assets/platform.png');
this.load.image('star', 'assets/star.png');
this.load.image('bomb', 'assets/bomb.png');
this.load.spritesheet('dude', 'assets/dude.png', { frameWidth: 32, frameHeight: 48 });
}
function create ()
{
this.add.image(400, 300, 'sky');
}
function update ()
{
}
</script>
</body>
</html>
您是否尝试直接在浏览器中打开 html 文件?如果是这样,这就是为什么这不起作用。请参阅 Phaser Getting Started Guide 了解有关如何配置本地 Web 服务器以提供文件的详细信息。
是的。您需要一台托管您的 javascript 和 html 的服务器才能使其正常工作。如果您只是将 html 个文件从您的本地目录拖到您的浏览器中,会话将无法访问其他需要的文件,因为它们仍然只保存在您的计算机本地。 Phaser 入门指南更深入,但本质上您不希望网页能够访问您计算机的本地文件。
以上任何解决方案是否适合您?对我来说,我使用了带有 Python 的简单 HTTP 服务器。我正确地引用了我的图像并且正确地托管了我的网络服务器。使用开发人员工具时,没有任何错误消息。我用头撞墙好几个小时。由于某种原因,Phaser API 无法从网页中分辨出本地目录 (http://192.168.0.2:8080/) 是什么。
我通过使用以下图片路径解决了我的问题:
'http://192.168.0.2:8080/assets/sky.png'
其中 192.168.0.2 是我托管服务器的本地 IP 地址
&
8080 是我用于通信的端口
除了为每个图像添加冗长的文件路径之外,您还可以结合已有的内容调用 this.load.setBaseURL('http://192.168.0.2:8080')
函数。
例如看下面的代码:
var config = {
type: Phaser.AUTO,
width: 800,
height: 600,
physics: {
default: 'arcade',
arcade: {
gravity: { y: 200 }
}
},
scene: {
preload: preload,
create: create
}
};
var game = new Phaser.Game(config);
function preload ()
{
console.log('preload');
this.load.setBaseURL('http://192.168.0.2:8080');
this.load.image('bombP','bowmb.png');
this.load.image('einMary','/bowmb.png');
}
function create ()
{
console.log('create');
this.add.image(126, 119, 'bombP');
this.add.image(222,269,'einMary');
//var s = game.add.sprite(80,0,'einMary');
//s.rotation=0.219;
}
现在,我正在学习本教程:https://phaser.io/tutorials/making-your-first-phaser-3-game/index
我按照第一位进行了操作,得到了将 sky.png 渲染到浏览器中的部分,但我的浏览器总是以空白结尾。我什至只是试图打开他们完成的示例,但一片空白。我是否需要 运行 它作为服务器之类的? 我试过 npm install,也没用。
我遵循了这个教程:https://phaser.io/tutorials/making-your-first-phaser-3-game/index
它在 'Requirements' 下引用的 zip 文件不会加载 part1.html、part.html 等页面。
代码如下:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Making your first Phaser 3 Game - Part 3</title>
<script src="//cdn.jsdelivr.net/npm/phaser@3.11.0/dist/phaser.js"></script>
<style type="text/css">
body {
margin: 0;
}
</style>
</head>
<body>
<script type="text/javascript">
var config = {
type: Phaser.AUTO,
width: 800,
height: 600,
scene: {
preload: preload,
create: create,
update: update
}
};
var game = new Phaser.Game(config);
function preload ()
{
this.load.image('sky', 'assets/sky.png');
this.load.image('ground', 'assets/platform.png');
this.load.image('star', 'assets/star.png');
this.load.image('bomb', 'assets/bomb.png');
this.load.spritesheet('dude', 'assets/dude.png', { frameWidth: 32, frameHeight: 48 });
}
function create ()
{
this.add.image(400, 300, 'sky');
}
function update ()
{
}
</script>
</body>
</html>
您是否尝试直接在浏览器中打开 html 文件?如果是这样,这就是为什么这不起作用。请参阅 Phaser Getting Started Guide 了解有关如何配置本地 Web 服务器以提供文件的详细信息。
是的。您需要一台托管您的 javascript 和 html 的服务器才能使其正常工作。如果您只是将 html 个文件从您的本地目录拖到您的浏览器中,会话将无法访问其他需要的文件,因为它们仍然只保存在您的计算机本地。 Phaser 入门指南更深入,但本质上您不希望网页能够访问您计算机的本地文件。
以上任何解决方案是否适合您?对我来说,我使用了带有 Python 的简单 HTTP 服务器。我正确地引用了我的图像并且正确地托管了我的网络服务器。使用开发人员工具时,没有任何错误消息。我用头撞墙好几个小时。由于某种原因,Phaser API 无法从网页中分辨出本地目录 (http://192.168.0.2:8080/) 是什么。
我通过使用以下图片路径解决了我的问题:
'http://192.168.0.2:8080/assets/sky.png'
其中 192.168.0.2 是我托管服务器的本地 IP 地址 & 8080 是我用于通信的端口
除了为每个图像添加冗长的文件路径之外,您还可以结合已有的内容调用 this.load.setBaseURL('http://192.168.0.2:8080')
函数。
例如看下面的代码:
var config = {
type: Phaser.AUTO,
width: 800,
height: 600,
physics: {
default: 'arcade',
arcade: {
gravity: { y: 200 }
}
},
scene: {
preload: preload,
create: create
}
};
var game = new Phaser.Game(config);
function preload ()
{
console.log('preload');
this.load.setBaseURL('http://192.168.0.2:8080');
this.load.image('bombP','bowmb.png');
this.load.image('einMary','/bowmb.png');
}
function create ()
{
console.log('create');
this.add.image(126, 119, 'bombP');
this.add.image(222,269,'einMary');
//var s = game.add.sprite(80,0,'einMary');
//s.rotation=0.219;
}