javascript - 我该如何让这个动画发挥作用?

标签 javascript html

我想要一个矩形水平移动。但是,该矩形没有动画。我该如何解决这个问题?

<script type="text/javascript">
var interval = 10;
var x=0;
var y=0;
var rect = null;
var context ;
var canvas;

function Rectangle(x, y, width, height, borderWidth) {
  this.x=x;
  this.y=y;
  this.width = width;
  this.height = height;
  this.borderWidth = borderWidth;
}

function DrawRects(){
  myRectangle = new Rectangle (250,70,100,50, 5);

  context.rect(myRectangle.x,myRectangle.y,myRectangle.width,myRectangle.height)
  context.fillStyle="#8ED6FF";
  context.fill();
  context.lineWidth=myRectangle.borderWidth;
  context.strokeStyle="black"; 
  context.stroke();
}

function updateStageObjects() {
  var amplitude = 150;
  var centerX = 240;    
  var nextX = myRectangle.x+ 10;

  myRectangle.x = nextX;    
}   

function clearCanvas() {
  context.clearRect(0,0,canvas.width, canvas.height);
}

function DrawRect(){
  alert("Test1");
  setTimeout(CheckCanvas,10);

  //clearCanvas();

  updateStageObjects();

  DrawRects();
  alert("Test2");
}

function CheckCanvas(){
  return !!(document.createElement('canvas').getContext);
}   

function CheckSound(){  
  return !!(document.createElement('sound').canPlayType)
}

function CheckVideo(){
  return !!(document.createElement('video').canPlayType)
}

function Checkstorage(){
  return !!(window.localStorage)
}

function CheckVideo(){
  return !!(document.createElement('video').canPlayType)
}

function DrawCanvas(){
  if (CheckCanvas()){
    canvas = document.getElementById('Canvas');
    context =canvas.getContext('2d');

    $('#Result').text('Canvas supported...');
    $('#Result').text($('#Result').text()+'Sound supported...'+CheckSound());
    $('#Result').text($('#Result').text()+'Video supported...'+CheckVideo());   
    $('#Result').text($('#Result').text()+'Storage supported...'+Checkstorage());

    DrawRects();
    setInterval(DrawRect(), 10);
  }
}
</script>

HTML:

<canvas id="Canvas" width="800px" height="800px" onclick="DrawCanvas()"> Nor supported</canvas>

最佳答案

你需要做

setInterval(DrawRect, 10);

使用 DrawRect() 将调用该函数一次,然后尝试每 10 次调用该函数的结果,作为函数(实际上不是)毫秒。

关于javascript - 我该如何让这个动画发挥作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6478836/

相关文章:

javascript - 在滚动条上隐藏绝对 div

html - 为什么高度不是: 100% work to expand divs to the screen height?

javascript - 查看日历中的事件,使用 PHP 和 Javascript,

javascript - 如何通过两个路由运行两个 Controller ?

javascript - 遍历两个(不同长度的)数组以产生交替输出

javascript - 模板中默认选择 Angular 4 选项

jquery - 为什么我的 Bootstrap 代码不工作

jquery - 在 ImageButton 上叠加文本

javascript - 在 Angular2/Javascript 中初始化变量对象

javascript - 将参数传递给 JavaScript 中的 url 回调函数