近期过滤了一下flex的sdk中的类的结构,下面将部门内容列举一下,便于了解flex的原理
一.UIComponent执行addChild以后发生了什么。
1.addChild是UIComponent有的一个添加子对象的方法,在执行了代码以后,会发生下面的三个事情,
1) addingChild(child);
2) $addChildAt(child, index);
3) childAdded(child);
首先addingChild执行就是为了为添加的对象设置属性,并初始化样式
其次$addChildAt,将对象添加到父类中
childAdded将会执行子类对象的initialize()方法
2.对象的initialize方法代码执行,主要操作如下
1)发出PREINITIALIZE事件
2)执行createChildren()方法
3)执行childrenCreated()方法,主要是为已经创建的对象设置属性,大小,显示列表进行验证
4)调用initializeAccessibility方法
5)调用initializationComplete()方法
二。对象的序列化顺序
constructor
createChildren
commitProperties
measure
updateDisplayList
---
- 创建的任何ActionScript 3.0组件都需要重写createChildren()和updateDisplayList()方法
- 需要设置的属性依赖于其他已设置的属性时或者需要显式传入属性并设置到新创建的组件时,才需重写commitProperties()方法。在组件的所有子组件都创建之后,组件会调用commitProperties()来设置所有传入的属性
- measure()方法允许在必要时手动计算所有已创建子组件的高度和宽度。创建有着特殊布局规则的新容器时,往往要重写该方法
分享到:
相关推荐
然后,通过这个UIComponent实例来使用addChild()方法添加Sprite或MovieClip。这样做可以绕过类型检查,同时利用UIComponent的布局功能,使得非UI组件对象能够在Flex应用中正确显示和管理。 四、代码示例解释: 1. ...
popup.addChild(label); // 使用PopUpManager添加并显示弹出窗口,同时设置居中参数 PopUpManager.addPopUp(popup, this, true); PopUpManager.centerPopUp(popup); } ``` 在上面的代码中,我们首先创建了一个...
该方法确保所有属性的变化能够同时发生,或者按照一定的顺序进行。 - **`createChildren()`**:创建组件的子组件。例如,`ComboBox`控件包含了`TextInput`控件和`Button`控件作为其子组件。 - **`layoutChrome()`**...
通过`mx.core.UIComponent.createChildren()`和`mx.core.UIComponent.addChild()`等方法创建和添加子组件时,可以在运行时进行数据绑定。 7. 延迟绑定与立即绑定: Flex提供了延迟绑定和立即绑定的概念。延迟绑定...
适时地调用`removeChild`和`addChild`可以有效控制CPU的占用,尤其是在大量动态元素频繁变化的情况下。 #### Sprite与UIComponent的性能考量 - **Sprite与UIComponent的对比**:在处理大量的UI组件时,`Sprite`...
public function DrawLine(lines:Sprite, uFrom:UIComponent, uTo:UIComponent):void { lines.graphics.moveTo(uFrom.x + uFrom.width / 2, uFrom.y + uFrom.height / 2); lines.graphics.lineTo(uTo.x + uTo....
需要注意的是,截图后的`Bitmap`对象必须通过`UIComponent`作为中介才能在舞台上显示,因为`Bitmap`不是`UIComponent`的子类,不能直接添加到容器中。`UIComponent`作为容器能够容纳任何类型的内容,包括`Bitmap`。 ...
- **图片展示**:使用 `<mx:Canvas>` 展示拍照后的图像。 #### 四、实现细节 1. **摄像头访问限制**:由于涉及到隐私问题,在实际部署时需要确保用户授权访问摄像头。 2. **兼容性问题**:不同浏览器对摄像头API...
public class MyComponent extends UIComponent { public function MyComponent() { super(); // 初始化属性 this.width = 100; this.height = 100; // 添加事件监听器 this.addEventListener(Event.ADDED_...
声明式编程是一种编程范式,与传统的命令式编程不同,它更注重描述“是什么”而非“怎么做”。在Flex4中,这一特性主要体现在MXML和ActionScript的结合上,使得开发者可以更直观地定义用户界面(UI)组件及其属性,...
videoDis.addChild(myVideo); } // 将可视的UIComponent组件转换为图片 public function UItoBitmap(source:UIComponent,target:UIComponent):void { // ... } // 将可视的UIComponent组件保存为本地图片...
通常,这可能是一个包含示例代码或资源的文件,你可以将其解压后参考其中的代码以进一步理解Flex全屏的实现。为了深入学习,建议结合具体的项目实践和查阅Adobe官方文档,以便更好地掌握Flex全屏技术。
在实际应用中,开发者还可以利用SWFLoader类,它是一个预设的UIComponent,可以直接在Flex或其他基于Flex的环境中使用,简化加载过程。 综上所述,加载SWF文件是Flash开发中的一个重要环节,它涉及ActionScript编程...
例如,当用户鼠标悬停在某个标签上时,可以显示更多关于该标签的信息,或者点击标签后跳转到相关的页面或执行特定的操作。 **6. 示例代码** 创建一个简单的Flex标签云可能涉及到以下代码: ```actionscript public...
addChild(bitmap); } } ``` 4. **鼠标事件监听** 要实现拖动功能,我们需要监听鼠标按下、移动和释放事件。在`DraggableImage`组件中,为`Bitmap`对象添加`mouseDown`, `mouseMove`, 和 `mouseUp`事件监听器。 ...
当事件发生时,这些监听器会被通知并执行相应的处理逻辑。 #### 18. addEventListener里面有几个参数,分别是什么意思? - **答案**:`addEventListener`方法接受两个主要参数: - `eventType`: 事件类型字符串。 ...
this.addChild(sprite); this.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); this.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); } private function onMouseDown(event:MouseEvent):void { ...
import mx.core.UIComponent; var button:Button = new Button(); button.label = "点击翻转"; addChild(button); var rotateEffect:Rotate3D = new Rotate3D(); rotateEffect.properties angle = 180; rotate...