如何清除新信息输入上的动画帧?

时间:2019-06-04 18:05:22

标签: javascript html canvas

我有一个图8的动画在屏幕上移动,当在文本框中输入新信息时,我似乎无法弄清楚如何清除动画。

当用户在文本框中输入内容时,动画就会开始播放,但是我希望任何新输入都可以从头开始重置动画。

我认为这与仅将循环设置为20有关。

如何重置循环并根据新的用户输入重新启动动画?

 /*Con le frecce direzionali, scorre di box*/
    private void passwordFieldKeyPressed(java.awt.event.KeyEvent evt) {                                         
        if(evt.getKeyCode() == KeyEvent.VK_DOWN)
            hostnameTextField.requestFocus();
        if(evt.getKeyCode() == KeyEvent.VK_UP)
            usernameTextField.requestFocus();
    } 

/*Con le frecce direzionali, scorre di box*/
    private void usernameTextFieldKeyPressed(java.awt.event.KeyEvent evt) {                                             
        if(evt.getKeyCode() == KeyEvent.VK_DOWN)    
            passwordField.requestFocus();
    }  

这似乎无能为力。

function redraw() {
polyline.clearRect(0, 0, width, height);
}

我还使用框中的onkeyup调用了两个函数。

https://codepen.io/braydendevito/pen/EzJjgP

谢谢!

1 个答案:

答案 0 :(得分:2)

问题在于,一旦按下按键,您就会调用 tick() redraw()-这意味着在这些函数中使用的所有全局变量将保留最后的值。 导致此行为的两个变量是 frame -应将其重置为0,将 points 数组重置为空数组。

<div align="center">
  A= <input type="text" id="amp" onkeyup="reset();" size="4"></input>
  A= <input type="text" id="freq" onkeyup="reset();" size="4"></input>
  A= <input type="text" id="speed" onkeyup="reset();" size="4"></input>
</div>


function reset()
{
  frame=0;
  points=[];
  tick();
  redraw();
}