2011-08-12 5 views
0

私がしたいのは、JSVGキャンバスからSVGDocumentに新しい要素を挿入して自動的にレンダリングして見ることができるようにすることです。ALWAYS_DYNAMIC JSVGCanvasからSVGDocumentに新しい要素を挿入

だから私はSVGcanvasという名前JSVGCanvasのを、持っている、とLoadEventDispatcherで、私はこのコードのようなドキュメントという名前SVGDocument、取得:http://www.svgopen.org/2002/papers/kormann__developing_svg_apps_with_batik/

、その後、内側:

this.SVGCanvas.addSVGLoadEventDispatcherListener(
    new SVGLoadEventDispatcherAdapter() { 
     @Override 
     public void svgLoadEventDispatchStarted (SVGLoadEventDispatcherEvent e) { 
      doc = SVGCanvas.getSVGDocument(); 
      ... 
     } 
} 

アップはこれに基づいていますhttp://wiki.apache.org/xmlgraphics-batik/DynamicSvgOffscreen

:イベントリスナー、私はこのコードをこれに基づいて

public void handleEvent (Event evt) { 
    setRB(this.IDButtonGroup, this.ID); 
    Element r = ((SVGDocument) doc).createElement("use"); 
    r.setAttribute("xhtml:href", "#cell"); 
    doc.getDocumentElement().appendChild(r); 
} 

を使用します

私はそれが画面上で動作すると思っていましたが、まだ動作させることはできません。誰でも助けることができますか? setRB関数は正常に動作しているので、問題はハンドラにないと思います。私はSVGCanvasが新しいdocをレンダリングしないと思う。ドキュメントはSVGCanvasでなければならず、SVG Canvasのドキュメント状態をALWAYS_DYNAMICに設定していたので、自動的に更新されると思いました。私は何か見落としてますか?

答えて

0

さて、私はそれは正しいですが、私は何かが恋しいです。 http://www.carto.net/papers/svg/manipulating_svg_with_dom_ecmascript/ 私は

public void handleEvent (Event evt) { 
    setRB(this.IDButtonGroup, this.ID); 
    Element r = ((SVGDocument) doc).createElementNS(SVGNS,"use"); 
    r.setAttributeNS(XLINKNS, "href", "#cell"); 
    doc.getDocumentElement().appendChild(r); 
} 

を使用する必要がありますし、あなたが行われています。これに基づいて !セルデフはSVGCanvasにあります! ああ、SVGNSとXLINKNSは名前空間文字列定数です。

String svgNS = "http://www.w3.org/2000/svg"; 
var xlinkNS = "http://www.w3.org/1999/xlink"; 
関連する問題