`

UIcomponent和Sprite的区别和使用上的不同

阅读更多

关于flex的容器UIComponent和Sprite物体的关系

flex中的架构,(举例UIComponent类的继承关系) 
UIComponent > FlexSprite> Sprite >DisplayObjectContainer>InteractiveObject >Displayobject

flash中的架构(Sprite类的继承关系) 
Sprite >DisplayObjectContainer>InteractiveObject >Displayobject

Flex中的UIMovieClip类继承于UIComponent ,flash中的MovieClip继承于Sprite, 
它们的这种继承关系我们可以通过flex帮助手册查阅到。


Flex Application里的addChild()

在Flex Application里,是不能直接用addChild添加Sprite,MovieClip等来自flash.display包里的类的。譬如以下代码就会报错:

 

private function init():void 
{    var sp:Sprite = new Sprite();    
      addChild(sp);
}

private function init():void 
{    var sp:Sprite = new Sprite();    
      addChild(sp);
}

 

TypeError: Error #1034: 强制转换类型失败:无法将 flash.display::Sprite@156b7b1 转换为 mx.core.IUIComponent。

这是因为Application的addChild方法并非完全继承自DisplayObjectContainer,

Application→LayoutContainer→Container→UIComponent→FlexSprite→Sprite

→DisplayObjectContainer

而是在Container那里被重写了:

 

public override function addChild(child:DisplayObject):DisplayObject

public override function addChild(child:DisplayObject):DisplayObject

 

虽然参数child的类型是DisplayObject,但是它必须实现IUIComponent接口(所有Flex组件都实现了这一接口),才能添加。

如果要在Application里添加Sprite,可以先把它装进一个UIComponent,然后再添加这个UIComponent:

 

import mx.core.UIComponent;

private function init():void 
{    var sp:Sprite = new Sprite();    
      var uc:UIComponent = new UIComponent();    
      uc.addChild(sp);    
      addChild(uc);
}
 

分享到:
评论

相关推荐

    flash优化技巧

    - **跨平台表现差异**:在不同操作系统和浏览器上,`cacheAsBitmap`的效果有所不同。例如,在Windows系统下的IE浏览器中,虽然能够有效降低CPU使用率,但在Firefox下可能效果有限,且存在一定的内存使用问题。在...

    《ActionScript 3.0语言和组件参考》电子文档(CHM)

    5. **类库和组件**:文档中详细列出了Flash Player和Adobe AIR提供的各种内置组件,如UIComponent、Sprite等,以及如何使用它们来构建复杂的用户界面。 6. **错误处理**:AS3通过抛出和捕获异常来处理错误,增强了...

    flashas3 api使用手册

    《Flash AS3 API 使用手册》是针对Adobe Flash Platform中ActionScript 3.0编程接口的详细指南,旨在帮助开发者深入理解和高效利用AS3语言在Flash Media Server 2上的应用。AS3是Flash平台上的一种强大脚本语言,为...

    Flex 4.6之可用第三方特效开发包

    1. **丰富的特效库**:Efflex包含了大量的预设特效,如淡入淡出、滑动切换、3D旋转等,这些特效可以方便地应用于任何显示对象,如UIComponent、Sprite或BitmapData。 2. **易于使用**:Efflex提供了简单直观的API,...

    Flex4 Declarations in ActionScript

    通过扩展Flex4的基类,如UIComponent或Sprite,我们可以创建自定义组件。例如: ```actionscript public class CustomButton extends UIComponent { private var _label:String; [Bindable] public function ...

    as3自定义组件

    5. **测试和调试**:在实际项目中使用组件,确保其在不同环境和情况下都能正常工作,这可能需要编写测试用例或在舞台上直接调试。 压缩包内的文件可能与这个过程有关: - **setup.bat**:这可能是一个批处理文件,...

    Flex 图片切换广告 xml配置文件 带缩略图

    在Flex中,我们可以通过继承已有的UIComponent或Sprite类,添加自己的方法和属性来创建自定义组件。例如,`AdImagePlayer`可能包含以下关键部分: 1. 加载并解析`config.xml`,获取图片和缩略图信息。 2. 创建主...

    代码按钮

    1. 定义一个Button类,继承自Flash的UIComponent或Sprite类。 2. 使用绘图API(如Graphics类)来绘制按钮的视觉外观。 3. 添加事件监听器,如addEventListener(),以响应用户点击事件。 4. 编写事件处理函数,定义...

    AS3中的PNG编码—用FLASH生成PNG

    6. **与Flex框架的集成**:如果你使用Flex框架,可以将BitmapData对象与Flex的UIComponent或VisualElement结合,通过设置`source`属性来显示生成的PNG。 通过理解以上概念和技术,开发者可以在AS3中灵活地生成PNG...

    flex 区域,鼠标画矩形选择组件

    通过这个组件,用户可以使用鼠标在界面上自由绘制矩形区域,从而进行特定的选择或操作。 首先,我们需要理解Flex中的基本绘图机制。Flex提供了Sprite类,它是Flash Player中的一个基本图形容器,允许开发者直接在...

    Creating_ActionScript3_components_in_flash_source

    在AS3中,组件由两类构成:DisplayObject类的子类(如Sprite或MovieClip)和UIComponent类的子类。DisplayObject组件主要用于图形绘制,而UIComponent更适合构建具有复杂行为的控件。 三、创建自定义组件 1. 创建新...

    AS3 滚动条 源码

    在AS3中,你可以使用Sprite或MovieClip类来构建自定义的滚动条组件。这些类提供了基本的图形绘制和事件处理功能。以下是一些关键知识点: 1. **UIComponent**: 这是AS3中所有自定义UI组件的基础类。通过继承...

    模仿百度的距离测量功能 flex

    2. **ActionScript类文件**:这些文件通常扩展自Flex的UIComponent或Sprite,用于实现自定义功能,比如测量逻辑。在这个案例中,可能有一个类负责处理地图上的点击事件,计算点与点之间的距离,并更新用户界面。 3....

    flex画线

    当鼠标悬停在`btn1`按钮上时,会创建另一个`Sprite`对象`lines1`,并绘制不同颜色的线条;而当鼠标离开按钮时,则清除`lines1`上的线条,并恢复到默认线条。 ```actionscript public function btn1_mouseOver(event...

    Flex addChild()方法注意事项

    二、直接使用 addChild()添加Sprite和MovieClip的问题: 由于Application的addChild()方法要求必须添加实现了IUIComponent接口的对象,直接使用addChild()添加Sprite或MovieClip这样的display object类是不被允许的...

    Flex 3D云标签

    7. **自定义组件**:为了创建独特的3D云标签,开发者可能需要自定义一个组件类,继承自Flex的基础组件,如Sprite或UIComponent,并添加必要的属性、方法和样式。 8. **动画效果**:Flex 4的Animate类和Timeline动画...

    AS3 坦克大战

    9. **优化和性能**:为了确保游戏在不同设备上的流畅运行,开发者可能会进行一些性能优化,比如减少不必要的计算、缓存重复使用的对象等。 10. **调试和测试**:在开发过程中,使用AS3的调试工具进行错误排查和性能...

    flex 图片缩放移动组件

    - 我们可以使用BitmapData对象来加载和处理图像数据,然后通过Bitmap组件显示。Bitmap组件继承自Sprite,用于显示位图图像。 3. **鼠标事件处理**: - 鼠标操作是实现图片缩放和移动的关键。我们需要监听...

    ActionScript3.0API

    而`Sprite`和`MovieClip`类是舞台上常用的可视化元素,它们继承自`DisplayObjectContainer`,可以容纳其他显示对象并进行图形操作。 在Flex开发中,`UIComponent`是所有用户界面组件的基类,提供了布局、绘图和事件...

Global site tag (gtag.js) - Google Analytics