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 is undefined」というメッセージが表示されます。

私は何を間違っていますか?

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 に答える