圆形颜色过渡

时间:2013-08-22 15:13:29

标签: canvas colors kineticjs transition

我有一个简单的脚本,画一个圆圈:

var stage = new Kinetic.Stage({
    container: 'container',
    width: 578,
    height: 200
});

var layer = new Kinetic.Layer();

var circle = new Kinetic.Circle({
    x: stage.getWidth() / 2,
    y: stage.getHeight() / 2,
    radius: 70,
    fill: 'red'
});

layer.add(circle);    
stage.add(layer);

我想要做的是在5秒的过程中将此圆圈的颜色从红色转换为蓝色(例如)。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

您可以使用补间来更改圆圈的颜色:

    var tween = new Kinetic.Tween({
        node: circle,
        fillR:0,
        fillG:0,
        fillB:255,
        duration:5
    });
    tween.play();

enter image description here enter image description here enter image description here

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

<!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.5.min.js"></script>

<style>
#container{
  border:solid 1px #ccc;
  margin-top: 10px;
  width:400px;
  height:400px;
}
</style>        
<script>
$(function(){

    var stage = new Kinetic.Stage({
        container: 'container',
        width: 400,
        height: 400
    });
    var layer = new Kinetic.Layer();
    stage.add(layer);

    var circle = new Kinetic.Circle({
        x: stage.getWidth() / 2,
        y: stage.getHeight() / 2,
        radius: 70,
        fill: 'red'
    });
    layer.add(circle);

    layer.draw();

    document.getElementById('recolor').addEventListener('click', function() {
        var tween = new Kinetic.Tween({
            node: circle,
            fillR:0,
            fillG:0,
            fillB:255,
            duration:5
        });
        tween.play();
    }, false);




}); // end $(function(){});

</script>       
</head>

<body>
    <button id="recolor">Recolor</button>
    <div id="container"></div>
</body>
</html>