2011/11/11

[轉]Flex 4 addChild 不能用了?


因为项目所需,要在Sprite上使用画图API并且将其显示,采用了以前的方法:
也就是在Sprite上画东西,然后用UIComponent.addChild(Sprite),再addChild(UIComponent)
import mx.core.UIComponent;
import mx.events.FlexEvent;
private var spr:Sprite;
private var uic:UIComponent;
protected function init(event:FlexEvent):void
{
  // TODO Auto-generated method stub
  spr = new Sprite;
  uic = new UIComponent;
  spr.graphics.beginFill(0xFFFFFF);
  spr.graphics.drawCircle(100, 100, 100);
  spr.graphics.endFill();
  uic.addChild(spr);
  addChild(uic);
}

但一调试就出错:主线程(已暂停: Error: addChild() 在此类中不可用。请改用 addElement() 或修改外观(如果有的话)。)
原因好像是Flex4不支持使用addChild这种方式了。按照提示,使用addElement,因而采用了SpriteVisualElement解决问题,完整的代码如下:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/halo" minWidth="1024" minHeight="768" creationComplete="init(event)">
    <fx:Script>
        <![CDATA[
            import mx.events.FlexEvent;
            import spark.core.SpriteVisualElement;
            private var sprve:SpriteVisualElement;
            protected function init(event:FlexEvent):void
            {
                // TODO Auto-generated method stub
                sprve = new SpriteVisualElement;
                ​
                sprve.graphics.beginFill(0xFFFFFF);
                sprve.graphics.drawCircle(100, 100, 100);
                sprve.graphics.endFill();
                this.addElement(sprve);
            }
        ]]>
    </fx:Script>
    <fx:Declarations>
        

沒有留言:

張貼留言