gpt4 book ai didi

javascript - 为什么浏览器中的 Phaser 无法加载简单图像?

转载 作者:行者123 更新时间:2023-12-03 00:04:48 25 4
gpt4 key购买 nike

现在,我正在关注本教程: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

它在“要求”下引用的 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>

最佳答案

是的。您需要一个托管 javascript 和 html 的服务器才能使其正常工作。如果您只是将 html 文件从本地目录拖到浏览器中, session 将无法访问其他所需的文件,因为它们仍然只保存在您的计算机本地。 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;
}

关于javascript - 为什么浏览器中的 Phaser 无法加载简单图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55011114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com