2012-08-30 3 views
0

저는 javascript와 kinetic-js에 상당히 익숙합니다.KineticJS의 배열

얼마 전에 Kinetic-js 3.9.0을 사용하여 Shape를 포함하는 스크립트를 만들었습니다. 그것은이 같은 (단지 관련 코드)이었다 3.9.0와

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

파이어 폭스에서 근무하지만 3.9.2의로는 더 이상 작동하지 않습니다. Ther 오류 콘솔에 "TypeError : popup.itemlist is undefined"라는 메시지가 표시됩니다.

내가 뭘 잘못하고 있니?

답변

0

무엇을하려하십니까? 도형을 그리려는 경우이 가이드를 확인하십시오. http://www.html5canvastutorials.com/kineticjs/html5-canvas-kineticjs-shape-tutorial/

+0

그 배열에 입력 된 텍스트의 일부 줄로 그 모양을 채우려고합니다. – Curantil

+0

그 경우에는 Group이 Shape보다 낫다고 생각합니다. [kineticjs-text-tutorial] (http://www.html5canvastutorials.com/kineticjs/html5-canvas-kineticjs-text-tutorial/) – maiconio

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>