javascript - 当乒乓 Racket 移动时, Canvas 球会朝错误的方向弹跳

标签 javascript html css dom canvas

我想从一张纸条开始。我尝试使用 jsfiddle 但由于某种原因 HTML5 Canvas 不起作用。因此,作为解决方法,我使用了 http://jsbin.com/gugihuwegopa/1/ .要使用此站点进行编辑,请单击窗口右上角的编辑按钮。无论如何,我的问题是,当 Racket 不动时,球会正确地从四面八方反弹(nomove 变量与此无关,它只是用“w”键让它消失).但是,当我用鼠标将 Racket 移向球时,球卡在 Racket 内。我认为这是因为它没有足够快地更新桨的位置,以至于球最终落在里面,而我的代码继续导致球在里面弹跳。 (直到将桨快速移开并且它松开)。是的,我试过将 cxt.fillRect 放在 cxt.arc() 之前。有时球也会穿过 Racket 。我认为解决这个问题的方法是在我的两个 if 语句中考虑球的方向:

if(y+ymove>=w && y+ymove<=w+h && x>=s && x<=s+l ) ymove*=-1; //top and bottom
if(x+xmove>=s && x+xmove<=s+l && y+ymove<=w+h && y+ymove>=w ) xmove*=-1; //left and right

我尝试过的其他一些方法包括:

    if(y+ymove>=w && y+ymove<=w+h && x>=s && x<=s+l && centerY+17.5 < y+ymove+5 && centerX+12.5 < x+xmove+5) ymove*=-1; //top and bottom, extra +5 for radius
    if(x+xmove>=s && x+xmove<=s+l && y+ymove<=w+h && y+ymove>=w && centerX+12.5 < x+xmove+5 && centerY+17.5 < y+ymove+5) xmove*=-1; //left and right

所以基本上,无论我如何移动 Racket ,我只需要球正确弹跳即可。随意编辑所有你想要的,即使这意味着添加更多的 if 语句。我要问的是绝对没有 JQuery。提前致谢。

最佳答案

我建议您对代码进行更友好的处理以获得帮助,删除注释并仅保留您需要修复的部分。

关于你的问题,你可以做的一件事是使用一个标志,如果球击中 Racket ,将标志设置为 True,进行一次重定向并停止检查碰撞,直到标志为假。

当然应该有更好的解决方法,但这只是一个开始。

关于javascript - 当乒乓 Racket 移动时, Canvas 球会朝错误的方向弹跳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25768145/

相关文章:

javascript - 我无法重定向并转到特定部分

php - <head> 在 Chrome 中显示为空

jquery - 悬停对井内表格的影响

html - 自定义 tumblr 标签以创建边框颜色和边框图像的主题选项

javascript - Leaflet Draw Plugin::如何找到折线的纬度并将其保存到数据库

javascript - 为什么 sails-mysql 会导致 Passport-local 出错?

javascript - 在 JavaScript 中使用 call 与通过简单函数返回

javascript - 如何在 JavaScript 中将数字显示为字符串

javascript - AngularJS + Bootstrap flexBox 不兼容?

HTML/CSS : Expanding a float-left element to remaining width of parent