我尝试使用后端的nodeJS和前端的AngularJS制作游戏,但我遇到了一些问题。 我使用express来配置NodeJS中的路由和AngularJS中的ngRoute。每个页面都有一个视图和一个控制器。 我有一个页面,其视图中只有一个“画布”和一个管理画布的控制器(这段代码是一个例子,它不是我的最终代码):
gameView.html:
<canvas id="gameCanvas" width="500" height="500"></canvas>
gameCtrl.js:
app.controller('gameCtrl', function($scope) {
var canvas = document.getElementById("gameCanvas");
var ctx = canvas.getContext("2d");
var img = new Image();
img.onload = function() {
ctx.drawImage(img, 10, 10);
}
img.src = 'image.png';
});
问题是在谷歌浏览器中,只有NodeJS(我已经尝试过使用Apache),在刷新X之后,drawImage不起作用。
我已经禁用了Chrome的GPU加速或使用了“document.createElement(”img“)”。 但没什么用。
在NodeJS中,我已经定义了一个公共文件夹:
app.use(express.static(__dirname + '/public'));
图像,html和js文件位于公共文件夹中。 所以,我不知道为什么它不起作用。
如果你有任何想法,谢谢你给我一个反馈。
(对不起我的英语,我是法国人)
编辑: 我在Cloud9网站上创建了一个工作区。
测试:https://testcanvas-c9-lludol.c9.io/
要查看代码:https://ide.c9.io/lludol/testcanvas
就像你看到的那样,它有效! 我甚至试图在这个工作区重现路线系统。
那么,您认为这是我的服务器有问题吗?
或者您认为我的nodeJS配置存在问题吗?
我找到了解决方案: 我可以存储图像的base64编码,而不是使用“new Image()”创建图像,而是直接用“drawImage”显示它。