2013-03-13 3 views
2

Raphael을 Meteor와 함께 사용하고 있는데 문제가 발생했습니다. var paper = Raphael("paper", 800, 600);을 사용하여 paper을 만듭니다.이 코드를 Template.board.rendered와 같은 렌더링 된 함수에 넣으면 잘 사용할 수 있습니다. 그러나이 템플리트의 용지 var는 템플리트 내에서 호출하더라도 다른 기능으로 액세스 할 수 없습니다. Meteor.startup에 종이를 만들어이 문제를 해결할 수 있다고 생각했지만 여전히 같은 문제가 있습니다.Meteor에서 여러 방법으로 Raphael 종이에 액세스하는 방법

예를 들어, 다음 코드는 작동하지 않습니다

Pieces = new Meteor.Collection('pieces'); 

Meteor.startup(function() { 
    var paper = Raphael("paper", 800, 600); 
}); 

Template.board.rendered = function() { 
    // If I create the paper in here along with the contents of createGoban 
    // it works, but then I can't use it anywhere else... 
    // var paper = Raphael("paper", 800, 600); 

    createGoban(); 
}; 

var createGoban = function() { 
    // Create goban 
    // Based off of svg in public domain: http://commons.wikimedia.org/wiki/File:Blank_Go_board.svg 
    // Converted using http://readysetraphael.com/ 
    var rect_a = paper.rect(0, 0, 96, 96); 
    rect_a.attr({fill: '#DCB35C','stroke-width': '0','stroke-opacity': '1'}).data('id', 'rect_a'); 
    var path_b = paper.path("M2.9,93h90.2m-.2-5H3m0-5h90m0-5H3m0-5h90m0-5H3m0-5h90m0-5H3m0-5h90m0-5H3m0-5h90m0-5H3m0-5h90m0-5H3m0-5h90m0-5H3m0-5h90m0-5H3m-.1-5h90.2M3,3V93m5,0V3m5,0V93m5,0V3m5,0V93m5,0V3m5,0V93m5,0V3m5,0V93m5,0V3m5,0V93m5,0V3m5,0V93m5,0V3m5,0V93m5,0V3m5,0V93m5,0V3m5,0V93m5,0V3"); 
    path_b.attr({stroke: '#000',"stroke-width": '0.2',fill: 'none','stroke-opacity': '1'}).data('id', 'path_b'); 
    var path_c = paper.path("M18,78l0,0m30,0l0,0m30,0l0,0m0-30l0,0m-30,0l0,0m-30,0l0,0m0-30l0,0m30,0l0,0m30,0l0,0"); 
    path_c.attr({stroke: '#000',"stroke-width": '4',"stroke-linecap": 'round','stroke-opacity': '1','fill': '#000000'}).data('id', 'path_c'); 
    var goban = [rect_a, path_b, path_c]; 

    // Scale goban up since rsr outputs reduced size 
    for(var i = 0; i < goban.length; i++) { 
    goban[i].transform('S5,5,0,0'); 
    }; 
}; 

답변

3

귀하의 코드가 잘 작동 paper 글로벌하게 startup() 내부 var 제거 후 :

Meteor.startup(function() { 
    paper = Raphael("paper", 800, 600); 
}); 
+1

이 오 와우,이 같은되었다 내 멍청한 실수. 정말 고맙습니다! – cttlfsh

관련 문제