Asp.net 使用 typescript 的 MVC 应用程序和 Phaser.io 不显示图像
Asp.net MVC application using typescript and Phaser.io does not show images
我有一个简单的 typescript 游戏(使用 Phaser.io),我要从 ASP.net MVC 应用程序中 运行 在具有布局(Razor)的 MVC 5 视图页面中做什么
我添加了视图和控制器
/Views/Home/About.cshtml
@{
ViewBag.Title = "About";
}
<link rel="stylesheet" href="app.css" type="text/css" />
<script src="~/phaser.js"></script>
<script src="~/app.js"></script>
<div id="game"></div>
游戏开始但不显示任何图像。看起来对图像的引用是错误的。
http://asskicker3.azurewebsites.net/Home/About
我在app.ts中引用了如下图片:
preload() {
this.game.load.image('background',"assets/background.jpg");
如果我将 HTML 页面添加到我的文件夹的根目录中,一切都会完美无缺。
http://asskicker3.azurewebsites.net/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
</head>
<body style="margin:0px; padding: 0px;">
<link rel="stylesheet" href="app.css" type="text/css" />
<script src="phaser.js"></script>
<script src="app.js"></script>
<div id="game"></div>
</body>
</html>
答案:
James Skemp 解决方案有效。只需添加 / 就可以了。完美!
您的资产参考是相对的。
因此,如果您查看浏览器中的网络选项卡,您会注意到它正在尝试加载与 URL 相关的图形。例如,http://asskicker3.azurewebsites.net/Home/assets/background.jpg
解决此问题的一种方法是更改您的 preload
,使资产 URL 是绝对的而不是相对的。所以
this.game.load.image('background', "assets/background.jpg");
会变成
this.game.load.image('background', "/assets/background.jpg");
我有一个简单的 typescript 游戏(使用 Phaser.io),我要从 ASP.net MVC 应用程序中 运行 在具有布局(Razor)的 MVC 5 视图页面中做什么 我添加了视图和控制器 /Views/Home/About.cshtml
@{
ViewBag.Title = "About";
}
<link rel="stylesheet" href="app.css" type="text/css" />
<script src="~/phaser.js"></script>
<script src="~/app.js"></script>
<div id="game"></div>
游戏开始但不显示任何图像。看起来对图像的引用是错误的。 http://asskicker3.azurewebsites.net/Home/About
我在app.ts中引用了如下图片:
preload() {
this.game.load.image('background',"assets/background.jpg");
如果我将 HTML 页面添加到我的文件夹的根目录中,一切都会完美无缺。 http://asskicker3.azurewebsites.net/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
</head>
<body style="margin:0px; padding: 0px;">
<link rel="stylesheet" href="app.css" type="text/css" />
<script src="phaser.js"></script>
<script src="app.js"></script>
<div id="game"></div>
</body>
</html>
答案: James Skemp 解决方案有效。只需添加 / 就可以了。完美!
您的资产参考是相对的。
因此,如果您查看浏览器中的网络选项卡,您会注意到它正在尝试加载与 URL 相关的图形。例如,http://asskicker3.azurewebsites.net/Home/assets/background.jpg
解决此问题的一种方法是更改您的 preload
,使资产 URL 是绝对的而不是相对的。所以
this.game.load.image('background', "assets/background.jpg");
会变成
this.game.load.image('background', "/assets/background.jpg");