当前位置: 首页 > 知识库问答 >
问题:

添加多次图像下拉屏幕(视频游戏js)

胡俊美
2023-03-14

但是我想做的不是只有一个图像(火球)下屏,我想有一堆图像下屏。

以下是火球的代码:

//Fireball script
function fFireball(offset) {
    return Math.floor(Math.random() * (window.innerWidth - offset))
}
let fireball = {x: fFireball(fireballElement.offsetWidth), y: 0}
const fireLoop = function() {
    fireball.y += 2; fireballElement.style.top = fireball.y + 'px'
    if (fireball.y > window.innerHeight) {
        fireball.x = fFireball(fireballElement.offsetWidth)
        fireballElement.style.left = fireball.x + 'px'; fireball.y = 0
    }
}
fireballElement.style.left = fireball.x + 'px'
let fireInterval = setInterval(fireLoop, 1000 / 100)

和图像:

<img src="Photo/fireball.png" id="fireball">

谢了!

共有1个答案

郭凡
2023-03-14

我在下面的代码中写下了几个注释,以帮助您更好地理解它。如果你还有其他问题,尽管问。

const fireballArray = [];
// You can add any additional attributes you need for your fire balls here like ids and class names.
function generateFireBallWithAttributes(el, attrs) {
  for (var key in attrs) {
    el.setAttribute(key, attrs[key]);
  }
  return el;
}

function createFireBalls(amount){
for (let i = 0; i <= amount; i++) {
  fireballArray.push(              // create an image element
    generateFireBallWithAttributes(document.createElement("img"), {
      src: "Photo/fireball.png",
      width: "32",
      height: "32",
    })
  );
}}

createFireBalls(10)

fireballArray.forEach((fireballElement) => {
  // Just add the id of the game body here, so that you could append your fire balls
  document.getElementById("game-body").appendChild(fireballElement);
  const fireball = { x: fFireball(fireballElement.offsetWidth), y: 0 };
  const fireLoop = function () {
    fireball.y += 2;
    fireballElement.style.top = fireball.y + "px";
    if (fireball.y > window.innerHeight) {
      fireball.x = fFireball(fireballElement.offsetWidth);
      fireballElement.style.left = fireball.x + "px";
      fireball.y = 0;
    }
  };
  fireballElement.style.left = fireball.x + "px";
  // I've randomised the interval
  // you may want to implement your own version to get more control
    let fireInterval = setInterval(fireLoop, 1000 / ((Math.random() * (125 - 75)) + 75));
});

function fFireball(offset) {  
  return Math.floor(Math.random() * (window.innerWidth - offset));
}
css prettyprint-override">img {
  position: absolute;
}

我受到这篇文章的启发,在添加额外属性时,用JavaScript同时为一个元素设置多个属性。如果你喜欢,请给他们一些爱。

 类似资料:
  • 问题内容: 如何使用乌龟图形将图像添加到我的图像? 每当我使用该功能时,我都会不断出错。 龟图形是否有其他方式加载/导入图像? 例如: 问题答案: 该模块确实支持图像,但仅支持GIF图像,不支持PNG或任何其他格式。正如文档所说: name 是gif文件的名称,shape是:安装相应的图像形状。 而且,如果您查看源代码,他们会认真对待“ gif文件”:它通过调用来确定您要添加图像还是多边形的方式显

  • 问题内容: 很难说出这里的要求。这个问题是模棱两可的,模糊的,不完整的,过于广泛的或修辞性的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开,请访问帮助中心。 7年前关闭。 我有一个网站,其中包含很多嵌入式YouTube视频;当前,这些站点是同时加载的,这当然会使站点在最初加载时运行得非常慢。 将图片加载为占位符/启动屏幕而非视频iframe的最佳方法是什么? 仅在单击时才 需要将

  • 我目前正在编写一个游戏,你必须避免小行星。我不得不处理一些混乱的坐标,我不得不猜测精灵的坐标。我现在有了描述我的世界的任意单位。不幸的是,我的游戏屏幕不能完全工作。当我想渲染我的小行星时,游戏屏幕会显示一个黑屏。 上面显示的代码工作正常,并向我展示了以下内容: 当我在GameScreen类中添加小行星的渲染方法时,GameScreen只是黑色的: 小行星等级: 小行星等级:

  • 问题内容: 现在,我正在Xcode 6中使用spritekit(swift)制作游戏。 它必须可在iPhone 4s及更高版本上播放。但据我所知,所有iPhone都来自4s和更高的Retina,所以我可以添加(750 x 1334像素)和@ 2x.png的所有图像。 因此,我不需要添加没有@ 2x的图像。 我对么? 问题答案: 示例:如果您具有512 x 512(1x)图像,并且希望它支持(2x和

  • 我需要提高游戏屏幕加载时间的Android游戏,使用LibGdx游戏引擎。我已经实现了一些类(ImageProvider和SoundManager),它们负责预加载游戏的资产和音频部分。所以,问题是我如何加载这些游戏资源而不影响游戏屏幕之间的加载时间? 我在网上搜索了这个问题,在Stack上发现了一些类似的问题。 如何减少libgdx中所有资产的加载时间 LibGDX中的AssetManager

  • 您好,我正在中制作一个游戏,我想知道如何以及最好的方式是在屏幕上添加游戏。以下是玩家健康状况小于或等于0的代码: 我不确定该怎么做,因为我试图使用另一个py呼叫游戏,但玩家死亡的时间被重置为0并返回,所以玩家死亡的地方可能发生任何事情吗?