2
g = new Graph();
g.edgeFactory.template.style.directed = true;
g.addNode("test");
layouter = new Graph.Layout.Ordered(g, topological_sort(g));
renderer = new Graph.Renderer.Raphael("graphCanvas", g, width, height);
我一直在試圖互操作我使用的JavaScript庫的片斷,但示例interop沒有任何類似Graph.Layout.Ordered的東西。 (這是我正在使用的圖書館:http://www.graphdracula.net)如何使用JavaScript進行交互操作?
你會如何交互?
我想出了這樣的事情。但它拋出了addNode無法找到的錯誤。 Javascript中的Graph.prototype具有addNode函數。
@anonymous
@JS('Graph.Layout')
class GraphLayoutOrdered {
external void layout();
external GraphLayoutOrdered(Graph g, List ts);
}
@anonymous
@JS('Graph.Renderer')
class RaphaelRenderer {
external void draw();
external RaphaelRenderer(String s, Graph g, int width, int height);
}
@anonymous
@JS("Graph")
class Graph {
external Graph();
external EdgeFactory get edgeFactory;
external void addNode(String s, [Object content]);
external void addEdge(var source, var target, var style);
}
@anonymous
@JS('Graph')
class EdgeFactory {
external AbstractEdge get template;
}
@anonymous
@JS('EdgeFactory')
class AbstractEdge {
external StyleObject get style;
}
@anonymous
@JS('AbstractEdge')
class StyleObject {
external bool get directed;
external set directed(bool b);
}
@anonymous
@JS()
external List topological_sort(Graph g);
是的,我已經解決了這兩個。他們絕對是最簡單的。 現在我無法使用圖形中的addNode工作。即使我創建了該功能。 –
如果您在圖中將Graph標記爲'@ anonymous' - 我不認爲其中的方法是可訪問的。我已經更新了我的答案 –