KineticJS:setFill不起作用

时间:2013-01-03 18:08:51

标签: javascript kineticjs

以下是它的要点:我有一个getColor方法和一个setColor方法。

  1. getColor将全局指针color_obj更新为当前对象。
  2. setColor使用该指针来更改对象的颜色。
  3. 问题是,它只会将其绘制为黑色。

    这里是小提琴: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%;    
    }
    

1 个答案:

答案 0 :(得分:0)

另外,4.3.0中的新内容

Kinetic.Text形状的重大变化。已删除Rectangle组件以简化API。 textFill现在是fill,textStroke现在是stroke,textStrokeWidth现在是strokeWidth,textShadow现在是shadow。如果要在文本后面放置一个矩形,则需要使用Kinetic.Rect形状对文本进行分组。文本fontSize单位现在以像素为单位(以点为单位)。 lineHeight attr现在默认为1(以前默认为1.2)。