raphael - 如何在 Meteor 中通过多种方法访问 Raphael 论文

标签 raphael meteor

我正在将 Raphael 与 Meteor 一起使用,但遇到了问题。我正在使用 var paper = Raphael("paper", 800, 600); 创建一个 paper 如果我将此代码放入渲染函数中,例如 Template.board .rendered,我可以很好地使用它。但是,该模板中的 paper var 显然无法被其他函数访问,即使我从模板内调用它们也是如此。我以为我可以通过在 Meteor.startup 中创建论文来解决这个问题,但我仍然遇到同样的问题。

例如,以下代码不起作用:

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');
  };
};

最佳答案

删除 startup() 中的 var 后,您的代码可以正常工作,这使得 paper 成为全局的:

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

关于raphael - 如何在 Meteor 中通过多种方法访问 Raphael 论文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15375868/

相关文章:

javascript - 在递归函数中将对象推送到包含数组的数组

javascript - Meteor mongodb 数据透视和更优雅的代码

reactjs - React - 将变量插入路由路径

javascript - 将 id 添加到 <circle> 标签不起作用

javascript - raphael viewbox 动画缩放

javascript - 如何使用 Raphael 在对象的内边缘创建渐变填充?

ios - 如何防止加载 meteor.local(使用 phonegap 构建 ios 应用程序时)

javascript - JavaScript 中具有挑战性的矢量数学

javascript - For 循环不适用于 JavaScript 动画

meteor - # meteor 中带有火焰的数组中的每个字符串