2013-11-28 2 views
2

Fabric.js를 사용하여 드로잉 캔버스를 만듭니다. 어쨌든 그룹 객체에있는 객체의 속성 값을 가져올 수 있습니까? 예를 들어Fabric.js : 그룹의 속성 값을 가져 오는 방법은 무엇입니까?

: 나는 사각형과 텍스트 객체를 생성하고, 나는 다음과 같은 시도 함께

new fabric.group([rect1,text1],{ 
     top:100, 
     left:100 
    }); 

을 그룹화 :

var objsInCanvas = canvas.getObjects(); 
for (obj in objsInCanvas) { 
    return objsInCanvas[obj].get('text') 
} 

그러나이 값을 얻을하지 않습니다 나를위한 텍스트. 누군가 이것에 대해 조언을 해줄 수 있습니까?

답변

7

나는 아직 코멘트 할 담당자가 충분하지 않지만이 문제를 일으킬 수있는 몇 가지 사항을 볼 수 있습니다. 더 많은 코드가 없으면 두 가지를 가정해야합니다.

먼저 새 그룹을 인스턴스화 할 때 Fabric 객체를 대문자로 시작해야합니다. 당신이하지 않은 경우

var group = new fabric.Group([rect1, text1],{ 
    ...  
}); 

둘째, 당신은 당신이 어 코드에서,하지만 한 확신 캔버스

canvas.add(group); 

에 그룹을 추가해야합니다. 그럼 우리는 좋은 물건을 얻을 수 있습니다 ...

당신의 for 루프는 캔버스에있는 모든 물체를 잡아냅니다. 맞습니까? 개체가 그룹에 속한 경우 개별 개체가 아닌 해당 그룹 자체를 움켜 쥐고있는 것으로 나타납니다. 해당 그룹의 모든 객체를 반복하여 속성을 가져와야합니다.

나는 그것이 작동 할 수 있는지보기 위해 빠른 피들을 만들었습니다. 그것은 당신이해야 할 일에 대한 아이디어를 줄 것입니다.

http://jsfiddle.net/pUw5k/

+0

감사합니다! – PaulLing

+0

바이올린은 놀라운 도움이되었습니다! –

3

당신은 항목을 통해 그룹의 개별 개체에 액세스 할 수 있습니다() 메소드 예를 들어

: 당신의 바이올린의 상세 예를 들어

group.item(0).set({ 
    text: 'trololo', 
    fill: 'white' 
}); //Retrieve item(0) and sets its properties 

group.item(1).setFill('red'); ////Retrieve item(1) and sets its properties 
관련 문제