0

我对 javascript 和 kinetic-js 还很陌生。

不久前,我使用 Kinetic-js 3.9.0 创建了一个包含 Shape 的脚本。是这样的(只是相关的代码):

popup = new Kinetic.Shape({
  drawFunc: function() {
    item = itemlist[0];
  },
  itemlist: []
}

使用 3.9.0 可以在 Firefox 中运行,但从 3.9.2 开始,它不再工作了。错误控制台给出消息“TypeError:popup.itemlist 未定义”。

我究竟做错了什么?

4

1 回答 1

0

我认为您应该在声明弹出对象后初始化 itemlist 变量。

Kinetic 似乎在其构造方法中不接受用户变量。

<!DOCTYPE HTML>
<html>
<head>
    <style>

    body {
        margin: 0px;
        padding: 0px;
    }
    </style>
    <script src="http://www.html5canvastutorials.com/libraries/kinetic-v3.10.5.js"></script>

    <script>
        function draw() {
            var stage = new Kinetic.Stage({
                container : "container",
                width : 800,
                height : 600
            });

            var layer = new Kinetic.Layer();

            var popup = new Kinetic.Shape({
                drawFunc: function(context) {
                    context.fillText(this.itemlist[0], 10,10);
                    context.fillText(this.itemlist[1], 10,50);
                    context.fillText(this.itemlist[2], 10,90);

                    this.fill(context);
                    this.stroke(context);       
                },
                fill: "red", 
                stroke: "green", strokeWidth:1
            });
            popup.itemlist = ["one", "two", "three"];

            layer.add(popup);

            // Add the layer to the stage
            stage.add(layer);
        };
        window.onload = draw;

    </script>
    </head>
    <body>
        <div id="container"></div>
    </body>
</html>
于 2012-08-30T13:06:26.410 回答