資料來源: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>
沒有留言:
張貼留言