【问题标题】:kinetic js, how can I improve resolution of elements动力学 js,如何提高元素的分辨率
【发布时间】:2013-06-29 01:54:31
【问题描述】:

我是新人使用动力学js,我认为它是那么好的库,问题是元素的分辨率,我知道动力学js不使用svg,但是分辨率很糟糕,我正在创建圆形和带有动画的示例形状,但这些看起来像糟糕的图像,我不想要那样。 有人知道解决方案还是绝对不可能更改分辨率?

例如,我创建这样的元素:

var circle = new Kinetic.Circle({
  x: this.stage.getWidth() / 2,
  y: this.stage.getHeight() / 2 + 10,
  radius: radius,
  fill: 'red',
  stroke: 'black',
  strokeWidth: 2,
  draggable: true
});

【问题讨论】:

    标签: javascript html css canvas kineticjs


    【解决方案1】:

    你能举个例子吗?

    您的动画可能会尝试以比正确渲染速度更快的速度绘制帧 - 导致重影/模糊。如果你降低帧率,“可怕”会降低吗?

    KineticJS、native-Canvas 和 SVG 之间的这些静态形状结果在我看来是一样的。

    这是代码和小提琴:http://jsfiddle.net/m1erickson/pgBv4/

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <title>Prototype</title>
        <script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
        <script src="http://d3lp1msu2r81bx.cloudfront.net/kjs/js/lib/kinetic-v4.5.1.min.js"></script>
    
    <style>
    #container{
      border:solid 1px #ccc;
      margin-top: 10px;
      width:200px;
      height:200px;
    }
    #canvas{ border:1px solid red; }
    </style>        
    <script>
    $(function(){
    
        var canvas=document.getElementById("canvas");
        var ctx=canvas.getContext("2d");
    
        ctx.beginPath();
        ctx.arc(100,100,75,0,Math.PI*2,false);
        ctx.closePath();
        ctx.fillStyle="red";
        ctx.strokeStyle="black";
        ctx.lineWidth=2;
        ctx.fill();
        ctx.stroke();
    
        var stage = new Kinetic.Stage({
            container: 'container',
            width: 200,
            height: 200
        });
        var layer = new Kinetic.Layer();
        stage.add(layer);
    
    
        var circle = new Kinetic.Circle({
          x: stage.getWidth() / 2,
          y: stage.getHeight() / 2 + 10,
          radius: 75,
          fill: 'red',
          stroke: 'black',
          strokeWidth: 2,
          draggable: true
        });
        layer.add(circle);
        layer.draw();
    
    
    
    }); // end $(function(){});
    
    </script>       
    </head>
    
    <body>
        <div id="container"></div>
        <canvas id="canvas" width=200 height=200></canvas>
        <svg width="200" height="200">
            <circle x="100" y="100" r="75" fill="red" stroke="black" stroke-width="2" />
        </svg>
    </body>
    </html>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-04
      • 2013-01-06
      • 2020-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多