javascript - KineticJS:setFill 不起作用

标签 javascript kineticjs

要点如下:我有一个 getColor 方法和一个 setColor 方法。

  1. getColor 将全局指针 color_obj 更新为当前对象。
  2. setColor 使用该指针来更改对象的颜色。

问题是,它只将其绘制为黑色。

这是 fiddle :http://jsfiddle.net/EbvH7/3/

和来源 - html:

<html>
<!--- Click the square box to get its color. 
    Then change the color and hit set.
    For some reason it draws the color black only....   -->

<head>
<script src="http://d3lp1msu2r81bx.cloudfront.net/kjs/js/lib/v4.2.0/kinetic-v4.2.0.min.js"></script>
<script src="http://jscolor.com/jscolor/jscolor.js"></script>

<script>
var stage;                              //canvas
var layer_frame = new Kinetic.Layer();  //Blue frame holder
var color_obj;     //global pointer to object to be colored. 

function getColor(obj) {
    color_obj = obj;    //set global pointer

    var fill = '"'+color_obj.getFill()+'"';
    var name = color_obj.getName();

    document.getElementById('color_pick').color.fromString(fill);
    document.getElementById('colorname_obj').innerHTML = name;

}

function setColor(){
    //Use global pointer
    var fill = document.getElementById('color_pick').color;
    var name = document.getElementById('colorname_obj').innerHTML;


    color_obj.setFill('"'+fill+'"'); 
    color_obj.setName(name);

    stage.draw()
}    


function setup() {
    stage = new Kinetic.Stage({
        container: 'container',
        width: 400, height: 400
    });

    var frame_area = new Kinetic.Rect({
        x: 100, y: 100, opacity: 1,
        width: 30, height: 30,
        fill: 'a7cccb', stroke: 'black', strokeWidth: 2,
        name: 'blue_box'
    });

    frame_area.on('click', function() {
        getColor(this)
    });


    // add the layer to the stage
    layer_frame.add(frame_area);
    stage.add(layer_frame);

    stage.draw();    

};


</script>
</head>

<body onload="setup()">
<!--Canvas--->
<div id="container"></div>

<!--Panels-->
<div id="panel_left">
<!--- C O L O R   B O X -->
    <div id="colorbox">
        <h7 id="colorname_obj" >None</h7><br/>
        <input class="color" id="color_pick" style="width:50%" value="000000" >
        <input type="button" id="color_set" value="Set" onclick="setColor()" >
    </div>
</div>
</body>
</html>​

和CSS:

#panel_left {
   position:absolute;
   top:30px; left:30px;
   width:100px; background-color:red;
}

#container {
    position:absolute;
    top:30px; left:130px;
    background-color:blue;
    width:50%; height:50%;    
}

最佳答案

此外,4.3.0 中的新增功能

Kinetic.Text 形状发生重大变化。矩形组件已被删除以简化 API。 textFill 现在是填充,textStroke 现在是描边,textStrokeWidth 现在是描边宽度,textShadow 现在是阴影。如果您想在文本后面有一个矩形,则需要使用 Kinetic.Rect 形状对文本进行分组。文本 fontSize 单位现在以像素为单位(以前以点为单位)。 lineHeight attr 现在默认为 1(过去默认为 1.2)。

关于javascript - KineticJS:setFill 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14144630/

相关文章:

javascript - 如何在mongo和javascript中控制一个集合字段中的多个更新?

javascript - 是否可以在不使用 Javascript 加载特定 div 的情况下刷新页面?

javascript - Angularjs - 在导航中 ng-repeat 在渲染期间显示更多行

javascript - 如何为动态图像设置坐标、ID 和偏移量

css - 如何将CSS样式添加到kineticjs

javascript - 删除处理程序不在范围内的事件监听器

javascript - 需要不同版本的包

javascript - kinectjs补间动态颜色

z-index - 动态 js zindex

javascript - 如何在 Kineticjs 中对曲线路径上的对象进行动画处理