Javascript:检查两个div之间的碰撞

2023-12-06

有什么方法可以检查名称为“character”的 DIV 是否与名称为“ground”的 DIV 重叠?

我想用干净的 Javascript 来做到这一点,我知道 jQuery 更好,但这就是我不想要的。 我看到了这个帖子:检查某些div之间的碰撞?,但它不返回任何内容。

感谢帮助。


首先,我建议您查看 HTML5canvas元素,从它的声音来看,你想要制作一个游戏,并且canvas非常适合这个;)

但是,要回答您的问题,您可以使用以下命令创建或获取 div 元素document.createElement() or getElementById()分别通过获取它们的 JS 设置值来获取它们的样式属性 (element.style)或使用获取计算样式如果您希望在 CSS 中设置初始值。

确保无论您如何获取这些 CSS 属性,都需要将它们解析为 JS 可以消化的内容。对于基于整数的头寸,parseInt()通常可以达到目的。

接下来,您进行数学计算。在本例中,您需要查看角色 div 的顶部加上其高度是否大于地面的顶部位置。如果是的话,那就是碰撞了。

要将样式设置回 div,只需设置 style 属性即可。

这是一个例子(复制自这把小提琴):

var character = document.getElementById("character");
var ground    = document.getElementById("ground");

//We could use getComputedStyle to get the style props,
//but I'm lazy
character.style.top = "10px";
character.style.height = "40px";
ground.style.top = "250px";

//For every 33ms (about 30fps)
setInterval(function(){
    
    //Get the height and position of the player
    var charTop    = parseInt(character.style.top),
        charHeight = parseInt(character.style.height);
    
    //and the top of the ground
    var groundTop = parseInt(ground.style.top);
    
    //linear gravity? Why now?
    charTop += 5;
    
    //If the character's bottom is hitting the ground,
    //Stop moving
    if(charTop + charHeight > groundTop) {
        charTop = groundTop - charHeight;    
    }
    
    //Set the character's final position    
    character.style.top = charTop + "px";
},33);
#character {
    position: absolute;
    width: 40px;
    height: 40px;
    left: 50px;
    background-color: #F00;
}

#ground {
    position: absolute;
    width: 300px;
    height: 60px;
    left: 0px;
    background-color: #A66;
}
<div id="character"></div>
<div id="ground"></div>

另一件事:当元素使用不同的定位属性时,虽然有一些复杂的方法来获取元素位置(例如:玩家使用top/left坐标,地面使用的地方bottom),管理起来比较困难。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript:检查两个div之间的碰撞 的相关文章

随机推荐

  • 苹果应用程序因 IPV6 崩溃而被拒绝

    我使用 Dotnet 的网络服务创建了一个 ios 应用程序 并于 1 个月前成功启动 我将我的应用程序与网络服务同步连接 现在我已经更改了应用程序 应用程序正在与网络服务异步连接 并将应 用程序放在应用程序商店中 但苹果拒绝了该应用程序
  • 如何在 Tkinter 中添加占位符

    我如何将占位符添加到条目中tkinter 我不相信它有像 HTML 这样的占位符功能 我发现要使文本在单击时消失 您必须添加一个onclick事件 但我如何创建onclick事件以及如何让文本首先出现 这是我正在使用的代码 我想说 在此处输
  • 什么是运算符的结合性以及为什么它很重要?

    对于运算符来说什么是结合性以及为什么它很重要 对于运算符来说 关联性意味着当同一运算符出现在一行中时 我们首先应用哪个运算符出现 下面 让Q成为操作员 a Q b Q c If Q是左结合的 那么它的计算结果为 a Q b Q c 如果它是
  • getElementsByTagName() 方法未按预期工作

    我试图简单地更改所有内容中的文本具有此代码的元素 p p
  • 需要在java中以特定时间间隔运行特定功能

    我有一个具体的要求 我有一个通知功能 可以将电子邮件发送到所有系统客户端 代码是用java写的 我想做的是 我想执行特定的工作 以特定的时间间隔发送电子邮件 例如每两天一次或每周或每月一次 截至目前我不知道如何做到这一点 我们正在使用 Qu
  • 解决 android 中的 java.lang.Throwable 异常

    我正在开发一个带有 sqlite 数据库的 Android 应用程序 在我的应用程序中编写与数据库操作相关的代码后 我遇到了以下异常 虽然我的应用程序没有停止 崩溃 但我想知道如何解决此异常 我不确定为什么会发生这个异常 但我认为它与 sq
  • C中不使用信号量的数据同步

    我需要在我的代码中进行数据同步 目前 我正在访问中断内以及本地函数中的全局值 如果中断调用频繁 则可能会损坏数据 我需要避免这种情况 我的代码中没有使用操作系统 因此无法使用信号量 使用与信号量类似的锁定方法可能会解决我的问题 任何帮助 将
  • 存储 PBKDF2 加密密码时使用什么数据类型?

    我正在使用 SimpleCrypto Net 来加密我的密码 据我所知 它使用 PBKDF2 和指定的盐和迭代次数 我想知道在数据库中设置密码列最适合我的数据类型是什么 从代码来看 结果是一个 64 字节的 Base64 编码密钥 考虑到
  • 在同一个azure web应用程序上创建虚拟目录

    我有一个在 Azure 上运行的应用程序 我需要复制该应用程序 以便不同的用户可以访问例如 site com s1 和 site com s2 并单独使用它们 应用程序是一样的 数据库会变 我尝试为我的应用程序创建一个虚拟目录 但每次都会遇
  • 检查窗口打开

    var windowUrl var windowName mywin var w window open windowUrl windowName windowSize w document write html w document cl
  • 使用不同的.Net 语言?

    是否有不同受欢迎程度的细分 Net 语言可用的 有谁知道任何提供此信息的调查 或者即使有可能确定这一点 Update 答案是not不同 Net 语言的列表 我希望看到显示每种 Net 语言的相对使用 流行程度的统计数据 谢谢 如果你像我一样
  • 访问受 Cloudflare 保护的网页

    首先 我想道歉 以防我的问题可能无法提供足够的连接或任何其他问题 我现在正在手机上输入此内容 因此 我正在开发一个项目 需要我在网页中自动执行任务 为了做到这一点 第一步是首先访问该页面 但我遇到了一个障碍 我尝试过搜索和想通了也无济于事
  • 如何使用 C# 迭代和统计 Word 文档中的修订次数?

    我一直在寻找这个问题 但找不到任何答案 所以希望这里的人可以提供帮助 我正在用 C 编写一个 WinForms 应用程序 其中我使用 Word Application Compare Documents 来比较两个文档并获取一个结果文档 其
  • shouldAutorotate To InterfaceOrientation:从未调用过

    我在 部署信息 下将支持的界面方向设置为除纵向倒置之外的所有方向 我想重写 shouldAutorotateToInterfaceOrientation 以实现自定义行为 即根据条件支持景观 由于限制 自定义视图转换 我只有一个视图控制器
  • 如何使用 AVAudioPlayer 在 iPhone sdk 中暂停和恢复同一首歌曲

    我想暂停这首歌 然后在 iPhone 中使用编程方式从该持续时间点继续播放 当我尝试暂停歌曲并再次开始播放我暂停的歌曲时 如何对其进行编码 是否有任何直接属性或建议任何代码可以解决我的问题 void playMusic path NSBun
  • 如何使用 Nuxt 2 转译 node_modules 中的依赖项?

    我读过有关转译的问题node modulesNuxt 但据说新的 Nuxt 2 已经解决了这个问题transpile选项中的nuxt config js file https nuxtjs org api configuration bui
  • 从 Beam 管道连接 google cloud sql postgres 实例

    我想从在谷歌数据流上运行的 apache beam 管道连接谷歌云 sql postgres 实例 我想使用 Python SDK 来完成此操作 我无法为此找到适当的文档 在云SQL如何指导我没有看到任何数据流文档 https cloud
  • Xcode 4.5 中的当前位置错误

    在 Xcode 4 5 中 苹果引入了苹果新地图 我的应用程序大量需要地图服务 我注意到在我的应用程序中它显示了错误的当前位置 直到您删除应用程序并重新打开它才显示正确的当前位置 有时不会 顺便提一下 当我连接到 4G 时 它显示的当前位置
  • javax.el.PropertyNotWritableException:value =“”:设置操作的非法语法[重复]

    这个问题在这里已经有答案了 我有这个表格
  • Javascript:检查两个div之间的碰撞

    有什么方法可以检查名称为 character 的 DIV 是否与名称为 ground 的 DIV 重叠 我想用干净的 Javascript 来做到这一点 我知道 jQuery 更好 但这就是我不想要的 我看到了这个帖子 检查某些div之间的