Javascript:翻译动画错误
我想用javascript创建一个空格invider: 我有一个函数可以获取宇宙飞船的位置:getstylevaiss,然后返回它(左边距),这样我就可以用这个函数定位导弹:Javascript:翻译动画错误,javascript,Javascript,我想用javascript创建一个空格invider: 我有一个函数可以获取宇宙飞船的位置:getstylevaiss,然后返回它(左边距),这样我就可以用这个函数定位导弹: function tir(event){ var actusizevaiss= getstylevaiss(); var missile=document.getElementById("missile"); if (event.which==38) { missile.st
function tir(event){
var actusizevaiss= getstylevaiss();
var missile=document.getElementById("missile");
if (event.which==38)
{
missile.style.marginLeft=actusizevaiss+"px";
missile.style.bottom= "100px";
missile.style.display="block"; // it was "none" before
missile.style.position="absolute";
while (parseInt(missile.style.bottom)<800) // while we are into the container
{
var animation = setInterval(tirer(),6000);
}
clearInterval(animation);
}
}
function getstylevaiss (){
var vaiss= document.getElementById("vaisseau");
var sizevaiss= vaiss.currentStyle ||window.getComputedStyle(vaiss);
var actusizevaiss=parseInt(sizevaiss.marginLeft);
return actusizevaiss;
}
当我使用setInterval(tier(),6000)时;导弹在一次内到达顶部,而不是液体(这就是问题所在)。但当我使用setInterval(tier,6000)时;Chrome会崩溃,我认为这是一个无限循环。尝试使用更可靠的requestanimationframe:它的工作原理稍有不同,但它会修复您的非流体体验 也许从这里开始?(或谷歌)
尝试使用更可靠的requestanimationframe:它的工作原理稍有不同,但它会修复您的非流体体验 也许从这里开始?(或谷歌)
如果这行:
employee.style.bottom=parseInt(currt.bottom)+20+“px”
,是为对象设置动画的工具,而您的问题是它会一次性更改位置,而不是使其平稳运行,您需要在此处使用css转换
#missile
{
transition: bottom 1s linear;
}
如果导弹覆盖的距离在不同情况下是不同的,那么这不是最可靠的方法,因为无论距离如何,现在导弹完成过渡总是需要1s。希望有帮助
是的,您应该使用
requestAnimationFrame()
,这比使用setInterval()
要好得多,但我认为您当前的问题不是因为这一点。如果这行:导弹.style.bottom=parseInt(currt.bottom)+20+“px”
,是为对象设置动画的工具,而您的问题是它会一次性更改位置,而不是使其平稳运行,您需要在此处使用css转换
#missile
{
transition: bottom 1s linear;
}
如果导弹覆盖的距离在不同情况下是不同的,那么这不是最可靠的方法,因为无论距离如何,现在导弹完成过渡总是需要1s。希望有帮助
是的,您应该使用
requestAnimationFrame()
,这比使用setInterval()
要好得多,但我认为您当前的问题不是因为这个。阅读我发布的文章。核心问题是,如果浏览器忙于做其他事情,它就不会按照您的时间间隔运行。因此,只有当浏览器决定执行setinterval函数时,您才能获得更新。使用animationframes可以让您有机会进行相应的编码。:-)如果你能帮我阅读我发布的文章,我无法在我的函数中使用它。核心问题是,如果浏览器忙于做其他事情,它就不会按照您的时间间隔运行。因此,只有当浏览器决定执行setinterval函数时,您才能获得更新。使用animationframes可以让您有机会进行相应的编码。:-)如果你能帮我的话,我无法在我的功能中使用它