`
ch_kexin
  • 浏览: 897818 次
  • 性别: Icon_minigender_2
  • 来自: 青岛
社区版块
存档分类
最新评论

针对FlexLite 的DataGroup文本的itemRenderer

 
阅读更多
package 
{
 
 
    import flash.display.Sprite;
 
    import flashx.textLayout.container.ContainerController;
    import flashx.textLayout.edit.SelectionManager;
    import flashx.textLayout.elements.TextFlow;
    import flashx.textLayout.events.CompositionCompleteEvent;
 
    import mx.core.IDataRenderer;
    import mx.core.UIComponent;
 
    import spark.utils.TextFlowUtil;
 
    /**
     * Simple TLF based Text ItemRenderer for flex DataGroup 
     * After data set and text composed it ivokes invalidateParentSizeAndDisplayList if
     * if height of text container changed.
     */
    public class TextItemRenderer extends UIComponent implements IItemRenderer    {
 
        private var _container:Sprite;
        private var _controller:ContainerController;
        private var _textFlow:TextFlow;
        private var _selectionManager:SelectionManager;
 
        private var dataChanged:Boolean;
        private var _data:String;
        public function set data(value:Object):void
        {
            if (_data != value)
            {
                _data = String(value);
                dataChanged = true;
                invalidateProperties();
            }
        }
 
        public function get data():Object
        {
            return _data;
        }
 
 
        protected override function createChildren():void
        {
            _container = new Sprite();
            _controller = new ContainerController(_container, NaN, NaN);
            _selectionManager = new SelectionManager;
            addChild(_container);
        }
 
 
        override protected function commitProperties():void
        {
            super.commitProperties();
            if (dataChanged)
            {
                if (_textFlow != null)
                {
                    _textFlow.flowComposer.removeAllControllers();
 
                    _textFlow.removeEventListener(CompositionCompleteEvent.COMPOSITION_COMPLETE,
                            compositionCompleteHandler);
                }
                _textFlow = TextFlowUtil.importFromString(_data);
 
                _textFlow.addEventListener(CompositionCompleteEvent.COMPOSITION_COMPLETE,
                        compositionCompleteHandler);
                _textFlow.interactionManager = _selectionManager;
                _textFlow.flowComposer.addController(_controller);
                _textFlow.flowComposer.updateToController();
                dataChanged = false;
            }
        }
 
 
        private function
                compositionCompleteHandler(event:CompositionCompleteEvent):void
        {
            if (measuredHeight !=
                    Math.ceil(_controller.getContentBounds().height))
            {
                invalidateSize();
                invalidateDisplayList();
                invalidateParentSizeAndDisplayList();
            }
        }
 
        override protected function measure():void
        {
            super.measure();
            measuredHeight = Math.ceil(_controller.getContentBounds().height);
        }
 
 
        override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
        {
            if (unscaledWidth == 0 || unscaledHeight == 0)
            {
                return;
            }
            if (_textFlow != null)
            {
                _controller.setCompositionSize(unscaledWidth, unscaledHeight);
                _textFlow.flowComposer.updateToController();
            }
        }
    }
}

调用:
var dataGroup:DataGroup = new DataGroup();
dataGroup.dataProvider = new ArrayCollection();
dataGroup.itemRenderer = PacketItemRenderer;
分享到:
评论

相关推荐

    DataGroup工具,数据库操作端

    《DataGroup工具:全方位数据库操作解决方案》 在IT行业中,数据库管理是不可或缺的一部分,而高效、便捷的数据库操作工具能够极大地提升工作效率。本文将详细探讨名为"DataGroup工具"的数据库操作端,它被誉为...

    FlexGrocerappt_10(DataGroupaList).rar_FlashMX/Flex源码_Flex_

    本资源“FlexGrocerappt_10(DataGroupaList).rar”是一个关于Flex编程的教育材料,特别关注如何在应用中使用DataGroup和List组件。这个压缩包包含了两个关键文件:一个PowerPoint演示文稿(10DataGroup&List.ppt)和...

    flex 常用组件附例子介绍

    5. **自定义项渲染**:可以通过自定义项渲染器来展示非文本数据。 6. **排序功能**:支持根据某一列的数据进行排序。 ##### 示例代码解析: ```xml dataProvider="{gm.baseCodeList}" id="codeList" click="code...

    Neodata Group Toolbox-crx插件

    语言:English 一键验证exaudi标签。 立即检查网页的标签详细信息,包括自定义事件信息。 Neodata Toolbox是一个免费的Chrome扩展程序,可帮助您验证自己域中安装的exaudi标记。 现在,您可以一键检查并确保标签正常...

    FLEX DATA GRID 分页

    在Flex开发中,数据网格(Data Grid)是一种常用的组件,用于显示大量结构化的数据,并提供交互功能,如排序、筛选和编辑。分页是管理大量数据流的关键特性,它允许用户逐页浏览数据,而不是一次性加载所有内容,...

    F5-iRule规则编写详解.ppt

    在F5-iRule规则编写中,Datagroup的创建是非常重要的一步,Datagroup是iRules中的基本数据结构,用于存储和处理数据。在iRule的创建和管理中,Datagroup的创建是必不可少的步骤。 iRule的引用是将iRule应用于实际...

    flex4.5学习笔记

    - **DataGroup使用**: 可以结合其他控件如`DataGrid`、`List`等显示数据。 **知识点13:借助基于列表的控件显示数据** - **DataGrid控件**: - **labelFunction**: 定义如何显示数据项。 - **dataField属性**: ...

    像Excel一样的table表格

    overflow:hidden\"><div id=\"DataGroup1\" style=\"position:relative\"></div></div></td></tr></table></div></td><td valign=\"top\">;overflow-x:scroll\">...

    Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例

    本文实例讲述了Python2.7基于笛卡尔积算法实现N...datagroup : 表示n个list(python 中的list与其他编程中的数组定义类似)的集合,即一个二维数组 counterIndex:datagroup反向下标值 counter : 用来记录当前datagroup中

    java 内部排序算法的性能分析

    这两个文件可能是用于可视化结果的组件,GraphViewer可能用于显示比较次数和移动次数的图表,而TextViewerWindow可能展示文本形式的结果。 5. **MainWindow.java**: 主窗口类,用户可能通过此窗口与程序交互,...

    Flex讲座讲义(pdf)

    6. **TextControls(文本类控件)**:包括`TextArea`和`RichEditableText`等,用于处理文本输入和显示。 7. **Containers(容器)**:如`HBox`和`VBox`,用于组织和布局其它组件。 8. **RepeaterControls(循环...

    Flex4权威指南+随书源代码+Flexbuild使用工具

    10. 使用DataGroup和List 11. 创建和分派事件 12. 使用DataGrid与项目呈现器 13. 使用拖放 14. 实现导航 15. 使用格式化器和验证器 16. 使用样式定制Flex应用 17. 使用皮肤定制Flex应用 18. 自定义ActionScript组件

    01 EPS2008地理信息工作站概述.pdf

    - EPS2008地理信息工作站基础平台拥有四级组织架构(数据空间DataSpace、数据集群DataGroup、数据专题DataSource、数据实体DataBody),支持海量数据的无缝集成。 - 该平台支持动态投影、叠加显示、叠加打印以及...

    Flex4权威指南(清晰pdf中文版)

    FLEX 4权威指南(带实例代码) 1.理解AIR 2.flex4开发 3.布置界面 ...10.使用DataGroup 和 List 11.创建和分派事件 。。。。。。。。。。。。 16.使用样式制动 17.使用皮肤指定FLEX应用 18.自定义组件

    AdvancedDataGrid综合应用

    通过使用GroupingField和DataGroup对象,我们可以将数据按照特定字段进行分组。 3. **多列排序** 与DataGrid单列排序不同,AdvancedDataGrid允许用户对多列进行排序,提供了更好的用户体验。通过设置`...

    vscode-flex-snippets:适用于Visual Studio Code的Flex(MX和Spark)代码段

    VSCode的Flex代码段 快速创建MX和Spark组件。 如何使用 ... DataGroup DateFormatter DateValidator DropDownList Ellipse MX Form Spark Form Group HBox HGroup HorizontalLayout HTTPService

    TWAIN驱动详解

    - **DataGroup (DG_)**:标识消息所属的数据组。 - **DataArgument (DAT_)**:指定数据的具体参数。 - **MessageID (MSG_)**:定义具体的操作。 例如,`DSM_Entry(MSG_GET, DG_CONTROL, DAT_CAPABILITIES)` 可用于...

Global site tag (gtag.js) - Google Analytics