在GWT中引用JavaScript库获取JavaScript代码

在GWT中引用JavaScript库获取JavaScript代码,gwt,javascript,d3.js,jsni,Gwt,Javascript,D3.js,Jsni,我正在使用,并且编写了一些javascript代码,这些代码已经绘制了我想要的动画。为了简单性/大小,假设我想使用示例源代码。我正在尝试使用GWT围绕动画构建更丰富的用户界面。例如,如果我在GWT java中设计了一个按钮来打开/关闭粒子动画并触发一个“StopAnimation()”javascript函数,那么我会将d3.js库放在哪里以便正确引用它 我已经阅读了以下与此主题相关的帖子: 我是GWT新手,所以我可能错过了一些东西,但所有这些示例都谈到了从GWT代码直接接触javascri

我正在使用,并且编写了一些javascript代码,这些代码已经绘制了我想要的动画。为了简单性/大小,假设我想使用示例源代码。我正在尝试使用GWT围绕动画构建更丰富的用户界面。例如,如果我在GWT java中设计了一个按钮来打开/关闭粒子动画并触发一个“StopAnimation()”javascript函数,那么我会将d3.js库放在哪里以便正确引用它

我已经阅读了以下与此主题相关的帖子:

我是GWT新手,所以我可能错过了一些东西,但所有这些示例都谈到了从GWT代码直接接触javascript库或与javascript代码交互。在我的例子中,我需要从GWT与之接口的唯一javascript代码是,所以我不认为d3.js需要任何特殊的JSNI接口,因为粒子示例代码是唯一使用d3.js的部分。我遇到的问题是,当我将javascript代码放入已编译的html文件时,它永远不会生成动画


MenuViewer的包装HTML
var w=960;
var h=500;
var z=d3.scale.category20c();
var i=0;
var svg=d3.select(“body”).select(“graph”).append(“svg:svg”).attr(“width”,w)、attr(“height”,h)、style(“pointer events”,“all”).on(“mousemove”,particle);
函数粒子(){
var m=d3.svg.mouse(this);
svg.append(“svg:circle”).attr(“cx”,m[0]).attr(“cy”,m[1]).attr(“r”,1e-6).style(“stroke”,z(++i)).style(“stroke opacity”,1).transition().duration(2000).ease(Math.sqrt).attr(“r”,100).style(“stroke opacity”,1e-6).remove();
}

我看到了我在GWT中创建的东西,但没有粒子。最初我得到的是引用错误,因为d3.js不在正确的文件夹中,但是一旦我把它放在war目录中,它们就消失了,所以问题不可能是引用错误。我可以这样将javascript代码直接放入html文件吗?到目前为止,我并不担心GWT/javascript与粒子代码的交互能否正常工作。我只想在同一页上看到相应的GWT代码和粒子代码动画。稍后我会担心停止动画

根面板被分配给“菜单”div,粒子代码被分配给“图形”div。当我通过firebug检查html时,“图形”div中没有创建任何内容。有人能解释我做错了什么吗?

此位不正确:

d3.select("body").select("graph")
没有称为“graph”的元素,因此这将是一个空选择

D3使用CSS3创建元素。我认为您希望选择ID为“graph”的元素,因此应该是:

d3.select("body").select("#graph")

除了上面的答案之外:请查看的源代码。 Protovis是D3.js的前身,Protovis GWT是它的GWT包装器


您可以查看GWT包装器的源代码,了解它们如何与Protovis交互,因为Protovis和d3.js共享一些常见的设计模式,这可能会帮助您处理用例。

是的,我在发布并返回查看代码几小时后发现了这一点。直到今天才有机会结束这个问题。