Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 试图建立一个基本的游戏引擎_Javascript_Canvas_Html5 Canvas_Game Engine_Drawimage - Fatal编程技术网

Javascript 试图建立一个基本的游戏引擎

Javascript 试图建立一个基本的游戏引擎,javascript,canvas,html5-canvas,game-engine,drawimage,Javascript,Canvas,Html5 Canvas,Game Engine,Drawimage,我试图通过构建自己的游戏引擎来教会自己游戏引擎的功能。当我说基本的游戏引擎时,那不是打字错误。到目前为止,我所拥有的只是一个简单的文本加载器,我正在开发一个图像加载器。即使使用and.onload=函数样式技术,我也无法使图像显示在画布中。事实上,我总是在图像加载方面遇到问题,我只是为了大便和傻笑,制作了一个视频加载程序,加载了四个短视频,制作并附加了视频标签和保存它们的div,但图像仍然让我疯狂!世界跆拳道联盟!任何帮助,但更重要的是,洞察力将是无价的,有助于新手尝试理解,而不是抄袭而不理解。

我试图通过构建自己的游戏引擎来教会自己游戏引擎的功能。当我说基本的游戏引擎时,那不是打字错误。到目前为止,我所拥有的只是一个简单的文本加载器,我正在开发一个图像加载器。即使使用and.onload=函数样式技术,我也无法使图像显示在画布中。事实上,我总是在图像加载方面遇到问题,我只是为了大便和傻笑,制作了一个视频加载程序,加载了四个短视频,制作并附加了视频标签和保存它们的div,但图像仍然让我疯狂!世界跆拳道联盟!任何帮助,但更重要的是,洞察力将是无价的,有助于新手尝试理解,而不是抄袭而不理解。提前谢谢

var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');

function drawText(context, pxSize, fontStyle, color, text, x, y){
  context.font = pxSize + 'px ' + fontStyle;
  context.fillStyle = color;
  context.fillText(text, x, y);
}

function drawHero(src, sourceX, sourceY, sourceWidth, sourceHeight, x, y, height, width){ 

  var hero = {
    image: new Image(),
    src: src,
    sourceX: sourceX,
    sourceY: sourceY,
    sourceWidth: sourceWidth + 'px',
    sourceHeight: sourceHeight + 'px',
    x: x,
    y: y,
    width: width + 'px',
    height: height + 'px'
  };

  hero.image.onload = function(){

   context.drawImage(hero.image, hero.sourceX, hero.sourceY, hero.sourceWidth, 

hero.sourceHeight, hero.x, hero.y, hero.width, hero.height);
  }
  hero.image.src = src;
}


drawHero("sonic.png" , "sonic1", 0, 0, 85, 119, 10, 10, 85, 119);

您将
hero.width
hero.height
定义为字符串,这会导致错误,因为
context.drawImage
需要一个数字作为高度和宽度

取下
宽度:宽度+“px”
高度:高度+“px”
并将其替换为
宽度:宽度
高度:高度

编辑:刚刚意识到您对
hero.sourceWidth
hero.sourceHeight
也做了同样的操作

编辑2:刚刚意识到您将10个参数传递给了
drawHero
,而它只接受9个参数。您应该删除
“sonic1”

编辑3:您将参数排序为
context.drawImage
也错误。 您可能需要阅读以下内容:。 使用以下命令:
context.drawImage(hero.image,hero.x,hero.y,hero.width,hero.height,hero.sourceX,hero.sourceY,hero.sourceWidth,hero.sourceHeight)


祝你的游戏引擎好运

您将
hero.width
hero.height
定义为字符串,这会导致错误,因为
context.drawImage
需要一个数字作为高度和宽度

取下
宽度:宽度+“px”
高度:高度+“px”
并将其替换为
宽度:宽度
高度:高度

编辑:刚刚意识到您对
hero.sourceWidth
hero.sourceHeight
也做了同样的操作

编辑2:刚刚意识到您将10个参数传递给了
drawHero
,而它只接受9个参数。您应该删除
“sonic1”

编辑3:您将参数排序为
context.drawImage
也错误。 您可能需要阅读以下内容:。 使用以下命令:
context.drawImage(hero.image,hero.x,hero.y,hero.width,hero.height,hero.sourceX,hero.sourceY,hero.sourceWidth,hero.sourceHeight)


祝你的游戏引擎好运

要正确加载您的图像和更一般的资源,请使用单独的功能创建资源,并使用“启动”功能在加载每个资源后启动引擎

var resourceCount = 0;
function loadResource(type, src) {
    if (type == Image) {
       resourceCount++;
       var newImage = new Image();
       newImage.onload = resourceLoaded;
       // you might want to handle errors to ease debugging.
       // newImage.onerror = ...
       newImage.src = src;
       return newImage;
    }
    // ... some other code for your text / sound / ... ressources
}

function resourceLoaded(loadedEvt) {
   resourceCount--;
   if (resourceCount == 0) startEngine();
}

// use with :
var heroImage = loadResource(Image, 'hero.png');

要正确加载图像和更一般的资源,请使用单独的功能创建资源,并使用“启动”功能在加载每个资源后启动引擎

var resourceCount = 0;
function loadResource(type, src) {
    if (type == Image) {
       resourceCount++;
       var newImage = new Image();
       newImage.onload = resourceLoaded;
       // you might want to handle errors to ease debugging.
       // newImage.onerror = ...
       newImage.src = src;
       return newImage;
    }
    // ... some other code for your text / sound / ... ressources
}

function resourceLoaded(loadedEvt) {
   resourceCount--;
   if (resourceCount == 0) startEngine();
}

// use with :
var heroImage = loadResource(Image, 'hero.png');

我相信这个问题可能更适合我相信这个问题可能更适合我抱歉,我已经忙得不可开交了,但我只是想说谢谢你的帮助,我们必须团结一致,并确保表示赞赏,你的建议发挥了巨大的作用,现在我想看看我是否能理解游戏炼金术士的帖子以获取更多图片,我正试图得到一个平滑、简单的瓷砖加载系统,尤其是正交贴图,这让我大吃一惊。我是一个巨大的文明迷,但我在努力做到这一点时伤了脑筋,为什么我决定再试一次?不管怎样,我非常感谢你的帮助。对不起,我的工作忙得不可开交,但我只想说谢谢你的帮助,我们必须团结一致,确保表示感谢,你的建议很有魅力,现在我想看看我是否能理解游戏炼金术士的帖子,获得更多的图片,我正在尝试顺利,轻松加载系统的瓷砖,尤其是正交地图,这让我震惊。我是一个巨大的文明迷,但我在努力做到这一点时伤了脑筋,为什么我决定再试一次?不管怎么说,我非常感谢你的帮助。我只是想看看这个,我相信分享,所以我一直在看这段视频,讲述奇怪的部分,以克劳福德为例,这家伙知道他的东西,无论如何,谢谢,谢谢,谢谢,谢谢你的帮助。我没有试过,但我现在正在研究它,这样我可以理解,而不是仅仅复制,我知道你在做什么,但不是很深入,这样我可以自己复制它,例如,我尝试使用JSON对象来保存图片的src、名称和索引,这样我就可以制作一个平铺图,我是一个巨大的civ迷,我很想建造类似的东西。无论如何,谢谢你的帮助!PS我看到听到一些关于吸血鬼的事情,如果我有很多问题的话,我怎么才能不成为吸血鬼中的一员呢?我只是想看看这个,我相信分享,所以我一直在看这个视频JavaScript奇怪的部分,以克劳福德为例,这个家伙知道他的东西,无论如何,谢谢你,谢谢你,谢谢你,谢谢你的帮助。我没有试过,但我现在正在研究它,这样我可以理解,而不是仅仅复制,我知道你在做什么,但不是很深入,这样我可以自己复制它,例如,我尝试使用JSON对象来保存图片的src、名称和索引,这样我就可以制作一个平铺图,我是一个巨大的civ迷,我很想建造类似的东西。无论如何,谢谢你的帮助!PS我看到或听到一些关于吸血鬼的事情,如果我有很多问题,我怎么不成为其中之一?