javascript - if 条件仅适用于警报并且位置已重置?
问题描述
代码是玩家去用户点击的地方,但现在我想让角色看它去的X轴。问题是它仅在您有警报时才有效,但只有在警报给出错误时才有效,因为如果警报没有给出错误,它就不起作用。另一个问题是,transform translate3d 被删除,然后播放器返回到相同的位置,尽管 scaleX 发生了变化。
我是 jquery 的新手,我不知道。
$(document).on("click mousedown", "#Park", function(e) {
var x = e.clientX;
var y = e.clientY;
var newposX = x - 60;
var newposY = y - 60;
var n = $(".circle").offset()
if (newposX < n.left) {
$(".circle").css("transform", "scaleX(-1)");
alert(ok)
}
$(".circle").css("transform", "translate3d(" + newposX + "px," + newposY + "px,0px)");
setTimeout(function() {
$(".circle3").css("display", "none");
$(".circle2").css("display", "block");
}, 2000);
$(".circle2").css("display", "none");
$(".circle3").css("display", "block");
});
解决方案
在条件之后,您立即transform
用新值覆盖 ,这意味着scaleX()
除非您的代码在alert()
.
相反,像这样编写条件,以确保在scaleX()
设置时不会被覆盖translate3d()
:
if (newposX < n.left) {
$(".circle").css("transform", "scaleX(-1) translate3d(" + newposX + "px," + newposY + "px,0px)");
} else {
$(".circle").css("transform", "translate3d(" + newposX + "px," + newposY + "px,0px)");
}
或者,你可以这样写,我认为这更容易阅读:
let transform = `translate3d(${newposX}px, ${newposY}px, 0px)`;
if (newposX < n.left) {
transform = 'scaleX(-1) ' + transform;
}
$('.circle').css('transform', transform);
推荐阅读
- picocli - picocli CLI 解析器:在渲染输出时隐藏 Java 变量名
- java - 从Java中的数组对象访问变量
- javascript - 基于另一个数组按值过滤数组
- python-3.x - 如何在用 python 3.7 编写的 lambda 函数中传递 AMI 标签值
- c++ - 使用 ReadFile 时,一半的读取缓冲区损坏
- vue.js - 如何将 v-model 与 Vue.js 中的方法绑定
- reactjs - React Router 不切换页面
- html - 如何将元素的位置固定到页面?
- flutter - Flutter,防止输入时间后键盘显示
- c# - 希望将控制台应用程序转换为 asap.net 网络表单