2011-10-12 101 views

回答

0

万一某人的兴趣它是如何做...

try { 
      InputStream inputStream = getClass().getResourceAsStream("/svg/sphere1.svg"); 

      _image = (SVGImage)SVGImage.createImage(inputStream, null); 

      _animator = SVGAnimator.createAnimator(_image, "net.rim.device.api.ui.Field"); 

      _document = _image.getDocument(); 

      _svg123 = (SVGElement)_document.getElementById("123"); 


     } 
     catch (IOException e) { e.printStackTrace(); } 
     Field _svgField = (Field)_animator.getTargetComponent();   

     _svgField.setBackground(blackBackground); 

     add(_svgField); 

     _svg123.addEventListener("click", this, false); 
     _svg123.addEventListener("DOMFocusIn", this, false); 
     _svg123.addEventListener("DOMFocusOut", this, false); 


    } 

    public void handleEvent(Event evt) { 

     if(_svg123 == evt.getCurrentTarget() && evt.getType() == "click"){ Dialog.alert("You clicked 123"); } 

     if(_svg123 == evt.getCurrentTarget() && evt.getType() == "DOMFocusIn") { ((SVGElement) _document.getElementById("outStroke123")).setTrait("fill", "#FF0000");  } 
     if(_svg123 == evt.getCurrentTarget() && evt.getType() == "DOMFocusOut") { ((SVGElement) _document.getElementById("outStroke123")).setTrait("fill", "#2F4F75"); } 

    } 
2

我要去猜你意思是FieldChangeListener而不是OnClickListener(错误的平台)。 SVGImage不是RIM开发对象的一部分,所以很不幸你不能。任何能够拥有FieldChangeListner的东西都必须是net.rim.device.api.ui.Field类的子类。

+0

嗯......好了,那么有没有一种方法来检测一个SVG元素上的点击? – Roger

+1

你可以看看http://supportforums.blackberry.com/t5/Java-Development/SVG-BitmapField/td-p/677495他们做了一些转换,并使用了一个'BitmapField',它可以有一个'FieldChangeListener ' – jprofitt