flex显示sprite
学习一个新东西,不知道为啥老是被小地方卡住!郁闷! 1.sprite类可以在AS工程中直接绘制在屏幕上. 要显示Sprite可以使用UIComponent包装一下,例如 Mxml代码 var comp: UIComponent = new UIComponent(); comp.addChild(Sprite对象); HBox.addChild(comp); Mxml代码 var comp: UIComponent = new UIComponent(); comp.addChild(Sprite对象); HBox.addChild(comp); 如果Sprite包含其它Sprite,只需要包装最顶级的Sprite. 由于某些原因(原Flash移植到Flex),需要直接在Flex中加入Sprite类(或继承Sprite的自定义类),但直接加入Sprite是不被允许的,主要原因是只有实现了IUIComponent接口的类才能被Flex组件架构接纳,作为组件来使用。 flex中的显示元素继承关系如下: UIComponent -> FlexSprite -> Sprite -> DisplayObjectContainer ->.... 因此Sprite无法直接加入到Flex中,但可以通过以下方式来加入,这样就不需要修改原先的设计架构了: 例如有一个sprite需要加入到Flex中: CODE: var sprite:Sprite = new sprite(); var uic:UIComponent = new UIComponent(); uic.addChild(sprite); addChild(uic); 这样sprite就可以加入到flex中,原理是UIComponent实现了IUIcomponent接口的类,可以把该类作为Flex和Sprite的桥梁,所有的sprite类都可以通过此类轻易的加入到flex架构中。 或者把Sprite改成UIComponent就可以了 测试代码: ?? ??? ???? protected function button11_clickHandler(event:MouseEvent):void ?? ??? ??? ?{ ?? ??? ??? ??? ?// TODO Auto-generated method stub ?? ??? ??? ??? ?var ui:UIComponent=new UIComponent(); ?? ??? ??? ??? ?pnl1.addElement(ui); ?? ??? ??? ??? ?var fw:Sprite = new Sprite(? ); ?? ??? ??? ??? ?var xian:Sprite = new Sprite( ); ?? ??? ??? ??? ?ui.addChild(fw); ?? ??? ??? ??? ?fw.addChild(xian); ?? ??? ??? ??? ?fw.graphics.beginFill(0xff0000,1.0); ?? ??? ??? ??? ?fw.graphics.drawRect(0,20,20); ?? ??? ??? ??? ?fw.graphics.endFill(); ?? ??? ??? ??? ? ?? ??? ??? ??? ?//fw.addEventListener(MouseEvent.MOUSE_DOWN,ax); ?? ??? ??? ??? ?//stage.addEventListener(MouseEvent.MOUSE_UP,sk); ?? ??? ??? ?} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |