2013-06-19 4 views
1

다음 코드는 제가 작업하고 있습니다. 이 간단한 기능은 제가 올바르게하고 있다는 것을 테스트하기 위해 만들어졌습니다. 분명히, 나는 아니야. 첫 번째 기능을 주석 처리하지 않으면 항상 같은 오류가 발생합니다.ExtJS에서 경로 스프라이트를 만들 때 오류가 발생했습니다.

// Build an arrow from first to second 
var buildEdge = function(first, second) 
{ 
    var arrow; 
    arrow = { 
     type: 'path', 
     path: "M " + first.x + " " + first.y + " " + 
       "L " + second.x + " " + second.y, 
     stroke: 'black' 
    }; 
    return arrow; 
}; 

var first = { 
    type: 'circle', 
    x: 100, 
    y: 100, 
    radius: 50, 

    fill: '#99FF99', 
    stroke: '#55CC55', 
    'stroke-width': 2 
}; 
// ......... 

firstsecond 모두의 ExtJS 스프라이트입니다. 이 불을 지르고 실행하는 경우 항상이 도움이 오류를 제공합니다

TypeError: this[("getPath" + a.type)] is not a function http://cdn.sencha.io/ext-4.2.0-gpl/ext-all.js Line 21

내가 내선 - all.js 겪었어요,하지만 난의 ExtJS의 내부 동작에 대해 많이 알고하지 않는다 (이 프로젝트를 위해) 어쨌든. 나는 자바 스크립트에 초보자라는 것을 인정할 것이다. 그러나 나는이 코드가 "컴파일"될 것이라는 것을 안다. 그리고 예,이 기능을 제거하면 다른 스프라이트 (firstsecond)가 올바르게 표시됩니다.

나는 여기 바보 같은 루키 실수를 했으므로 어떤 도움이라도 환영 할 것입니다. 감사!

답변

1

아마도이 코드를 시도해보고 어떻게됩니까?

// Build an arrow from first to second 
// surface param is surface instance sprite is to be added to. 
var buildEdge = function(first, second, surface) 
{ 
    var arrow; 
    arrow = Ext.create('Ext.draw.Sprite', { 
     type: 'path', 
     path: "M " + first.x + " " + first.y + " " + 
       "L " + second.x + " " + second.y, 
     stroke: 'black' 
    }); 

    surface.add(arrow); 
    arrow.show(true); 

    //return arrow if you want to work with it elsewhere outside of method. 
}; 

주 :

체크 아웃 surface.add() 메소드 clasificado의 의견을.

http://docs.sencha.com/extjs/4.1.1/#!/api/Ext.draw.Surface-method-add

"렌더링 이벤트가 제기 한 후 프로그래밍 방식으로 새로운 스프라이트를 추가하는 경우, 수동으로 새로운 스프라이트의 .show (참) 메소드를 호출해야"
관련 문제