圆圈不会在画布上绘制

Bodoppels

嗨,我尝试制作动画。一个圆圈应该从右到左延伸。现在的问题是在画布上没有画圆。我在控制台日志中检入了chromes开发人员工具,但没有错误。有谁知道错误是什么?

      window.onload = window.onresize = function() {
        var C = 1; // canvas width to viewport width ratio
        var el = document.getElementById("myCanvas");


        var viewportWidth = window.innerWidth;
        var viewportHeight = window.innerHeight;

        var canvasWidth = viewportWidth * C;
        var canvasHeight = viewportHeight;
        el.style.position = "fixed";
        el.setAttribute("width", canvasWidth);
        el.setAttribute("height", canvasHeight);
        var x = canvasWidth / 100;
        var y = canvasHeight / 100;
        var ballx = canvasWidth / 100;
        var n;


        window.ctx = el.getContext("2d");
        ctx.clearRect(0, 0, canvasWidth, canvasHeight);
        // draw triangles


        function init() {
          ballx;
          return setInterval(main_loop, 1000);
        }



        function drawcircles() {
          function getRandomElement(array) {
            if (array.length == 0) {
              return undefined;
            }
            return array[Math.floor(Math.random() * array.length)];
          }

          var circles = [
            '#FFFF00',
            '#FF0000',
            '#0000FF'
          ];

          ctx.beginPath();
          ctx.arc(ballx * 108, canvasHeight / 2, x * 5, 0, 2 * Math.PI, false);
          ctx.fillStyle = JSON.stringify(getRandomElement(circles));
          ctx.fill();
          ctx.closePath;

        }

        function draw() {
          var counterClockwise = false;

          ctx.clearRect(0, 0, canvasWidth, canvasHeight);

          //first halfarc
          ctx.beginPath();
          ctx.arc(x * 80, y * 80, y * 10, 0 * Math.PI, 1 * Math.PI, counterClockwise);
          ctx.lineWidth = y * 1;
          ctx.strokeStyle = 'black';
          ctx.stroke();
          ctx.closePath;
          //second halfarc
          ctx.beginPath();
          ctx.arc(x * 50, y * 80, y * 10, 0 * Math.PI, 1 * Math.PI, counterClockwise);
          ctx.lineWidth = y * 1;
          ctx.strokeStyle = 'black';
          ctx.stroke();
          ctx.closePath;
          //third halfarc
          ctx.beginPath();
          ctx.arc(x * 20, y * 80, y * 10, 0 * Math.PI, 1 * Math.PI, counterClockwise);
          ctx.lineWidth = y * 1;
          ctx.strokeStyle = 'black';
          ctx.stroke();
          ctx.closePath;


          // draw stop button
          ctx.beginPath();
          ctx.moveTo(x * 87, y * 2);
          ctx.lineTo(x * 87, y * 10);
          ctx.lineWidth = x;
          ctx.stroke();
          ctx.beginPath();
          ctx.moveTo(x * 95, y * 2);
          ctx.lineTo(x * 95, y * 10);
          ctx.lineWidth = x;
          ctx.stroke();
          ctx.closePath;
          //circle



        }

        function update() {
          ballx -= 0.1;


          if (ballx < 0) {
            ballx = -radius;


          }

        }







        function main_loop() {
          drawcircles();
          draw();
          update();



        }


        init();

        function initi() {
          console.log('init');
          // Get a reference to our touch-sensitive element
          var touchzone = document.getElementById("myCanvas");
          // Add an event handler for the touchstart event
          touchzone.addEventListener("mousedown", touchHandler, false);
        }

        function touchHandler(event) {
          // Get a reference to our coordinates div
          var can = document.getElementById("myCanvas");
          // Write the coordinates of the touch to the div
          if (event.pageX < x * 50 && event.pageY > y * 10) {
            ballx += 1;
          } else if (event.pageX > x * 50 && event.pageY > y * 10) {
            ballx -= 1;
          }

          console.log(event, x, ballx);

          draw();


        }
        initi();
        draw();
      }
<div id="gameArea">
  <canvas id="myCanvas"></canvas>
</div>

土豆皮

呼叫draw()后的呼叫drawcircles()有一个ctx.clearRect-清除画布(包括刚刚绘制的圆圈)。

搬家drawcircles();draw();main_loop会使循环出现。请注意,您必须稍等片刻才能在可见区域内绘制圆。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

virtualenv不会在Windows上激活

来自分类Dev

Tkinter按钮将不会在画布上滚动

来自分类Dev

JScrollPane不会在JPanel上滚动

来自分类Dev

实例化方法不会在画布内绘制预制按钮,也不会以正确的预制尺寸绘制它

来自分类Dev

iOS:frame.size.width / 2不会在每个设备上产生一个圆圈

来自分类Dev

画布不会在for循环后绘制矩形

来自分类Dev

Java的SWT:GC不会在画布上绘制简单的矩形,但是会在图像上绘制它

来自分类Dev

代码不会在断点上停止

来自分类Dev

PinView不会在循环中绘制

来自分类Dev

Java不会在JPanel上绘图

来自分类Dev

拖动并移动在画布上绘制的圆圈

来自分类Dev

Tkinter不会在Canvas上绘制矩形

来自分类Dev

tslib工具不会在屏幕上绘制任何内容

来自分类Dev

Koken不会在DigitalOcean上加载

来自分类Dev

OpenGL-重新绑定glBindVertexArray不会在屏幕上绘制任何内容

来自分类Dev

画布不会在for循环后绘制矩形

来自分类Dev

Firefox不会在初次访问时立即显示在画布上

来自分类Dev

Steam不会在15.10上启动

来自分类Dev

SharedPreference不会在Android上保存

来自分类Dev

在画布上绘制随机颜色的圆圈

来自分类Dev

OnLongClickListener不会在ViewPager上触发

来自分类Dev

paintGL不会在屏幕上绘制任何内容

来自分类Dev

pywal不会在startx上运行

来自分类Dev

画布不会在其中显示图像

来自分类Dev

不会在Ant UNZIP上覆盖

来自分类Dev

伺服不会在FPGA上停止

来自分类Dev

为什么添加的贝塞尔曲线不会在画布上呈现?

来自分类Dev

不会在 IE 上执行的 CSS

来自分类Dev

附加条不会在 svg 元素上绘制