无法同时移动两个画布矩形

时间:2016-07-02 19:53:35

标签: javascript canvas html5-canvas pong

我今天又问了一个问题,还有另一个问题......

但首先是代码:



var str_parse = function(data){
  data = data.replace(/<[/]*body[^>]*>/g,'');
  data = data.replace(/<--[\S\s]*?-->/g,'');
  data = data.replace(/[\r]+/g,'');
  data = data.replace(/<noscript[^>]*>[\S\s]*?<\/noscript>/g,'');
  data = data.replace(/<script[^>]*>[\S\s]*?<\/script>/g,'');
  data = data.replace(/<script.*\/>/,'');
  return data
}

get_url = function(URL){
  $.ajax({
    url:"http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22"+
    encodeURIComponent(URL)+"%22",
    dataType: "jsonp",
    type: 'get',
    success: function(r){
      data=r.results[0];
      data = str_parse(data);
      data = data.split(/[\n]+/);

    //// first line of the csv holds the colnames
      var HEADER = data[0].split(",");
      data.shift();

    /// create { OBJECT } structure for each row
        data = (function(){
        var o=[]; 
        data.forEach(function(E){
            o.push( (function(){ 
            var _o={}; 
            for( var i=0, s=E.split(",");i<s.length;i++ ) 
              _o[HEADER[i]]=s[i];
            return _o;
          }()) );
        });
        return o;
      }());

    /// THE FINAL OBJECT 
      console.log(data);
      return data;
    }
  }); 
}

$('#a').click(function() {
    get_url("http://ichart.finance.yahoo.com/table.csv?a=8&b=11&e=10&g=d&c=2005&d=2&f=2016&s=YHOO");
});
&#13;
&#13;
&#13;

所以每个矩阵都在完美地移动:) 但这是问题.. 我不能把它们都移动到一起......

感谢您的帮助!!

1 个答案:

答案 0 :(得分:0)

问题是,浏览器一次只能处理1个按键。要绕过这一点,您需要遵循以下事项:

  • 数组
  • 两个事件监听器,一个用于keydown,另一个用于keyup事件。

数组将保持当前按下的键。在keydown事件监听器中,您需要将与按下的键的id相同的索引处的元素设置为true,并且在keyup eventlistener中,您需要将同一元素设置为false。例如:

var keys = [];

document.addEventListener("keydown", function(e) {
    keys[e.keyCode] = true;
});

document.addEventListener("keyup", function(e) {
    keys[e.keyCode] = false;
});

这将确保在释放密钥之前元素保持为真。您可以通过检查具有相同索引的元素来检查当前是否按下了某个键:

if (keys[87]) {
    // The "W" key is pressed
}
if (keys[83]) {
    // The "S" key is pressed
}
/// ...

注意:检查按下的键时不应使用else-if