`
Fis
  • 浏览: 87151 次
  • 性别: Icon_minigender_1
  • 来自: 龙城
社区版块
存档分类
最新评论

条目渲染器和ClassFactory的总结

    博客分类:
  • AS
阅读更多
  游戏中时常要用到DataGrid 控件来显示二维结构的数据,为了更好的展示数据,往往需要给DataGrid 控件的单元格定制更丰富的界面,比如在一个DataGrid 的某列的单元格里添加图片、文本或下拉菜单等其他下层控件,这些下层控件我们往往需要用到DataGridColumn的 itemRenderer属性,把一个定义了这些下层控件的类、类路径或一个ClassFactory对象传到这个属性里,以得到一个自定义显示界面的列。
  ClassFactory和 DataGridColumn.itemRenderer 在里面的工作机制在这里不作重点介绍,需要介绍的则是如何使那些自定义的下层控件能与外界沟通,因为这些控件如果只能在定义它的类里面工作,就起不到更大的交互功能了。所以,如何让外界找到他们,会是一个很关键的环节。下面来看看我的做法:
  现在有已有一个DataGrid控件dg ,为了简化说明,as代码只为dg添加了一列。自定义有一个包含了需要在DataGrid控件的某列中显示的下层控件的mxml文件: MyDgColumn.mxml,一下是dg所在的mxml文件的<Script />代码片段:
<mx:Script>
……
var myDgColumn:DataGridColumn = new DataGridColumn;
var myDgFactory:ClassFactory = new ClassFactory("MyDgColumn");
myDgFactory.properties = {msg:"(*^_^*)"};
myDgColumn.itemRenderer = myDgFactory;
dg.columns = [myDgColumn];
……
</mx:Script>


再看看 MyDgColumn.mxml 的代码:

<?xml version="1.0" encoding="utf-8"?>
<mx:LinkButton xmlns:mx="http://www.adobe.com/2006/mxml"  width="30" height="20" label="按钮" click="{onClick(event)}">
        <mx:Script>
                <![CDATA[
                        import mx.events.MenuEvent;
                        public var msg:String = "";
                        private function onClick(event:MouseEvent):void{
                                                               trace(msg);
                        }
                ]]>
        </mx:Script>
</mx:LinkButton>


  运行后点击dg列上的按钮,即可发现能够获取到 MyDgColumn.mxml 中的msg属性,这就实现了一个简单的dg与dg内部控件的交互。通过这个就可以做更复杂的代码了。这里面ClassFactory 的 properties  属性起到了很关键的作用,通过它,当ClassFactory 对象被调用了 newInstance( ) 方法,就会把properties  中相应的属性值设置给 ClassFactory将要实例花的类对象里面,以便达到同一个类生产不同对象的目的。以下是flex 中 ClassFactory的 newInstance方法的实现:
        /**
         *  Creates a new instance of the <code>generator</code> class,
         *  with the properties specified by <code>properties</code>.
         *
         *  <p>This method implements the <code>newInstance()</code> method
         *  of the IFactory interface.</p>
         *
         *  @return The new instance that was created.
         */
       public function newInstance():*
       {
        var instance:Object = new generator();

                if (properties != null)
                {
                        for (var p:String in properties)
                {
                        instance[p] = properties[p];
                }
               }
               return instance;
         }
分享到:
评论

相关推荐

    Flex4_DataGrid_Tree_条目渲染器_源码

    你可以从中学习到如何创建和配置DataGrid和Tree,以及如何定义和应用自定义的条目渲染器。通过实践这些代码,你将更深入地理解Flex4中的数据展示和定制化技巧。 总之,了解并熟练掌握Flex4的DataGrid和Tree组件,...

    内渲染器_ItemRenderer

    - 内渲染器可以根据数据源中的每个条目进行实例化,这意味着每个列表项都可以有不同的显示样式。 2. **创建内渲染器**: - 创建内渲染器通常涉及两个步骤:首先,创建一个新的MXML组件,然后在该组件中定义视图...

    flex quick starts

    ### 使用条目渲染器在Adobe Flex中的应用 #### 一、引言 在Adobe Flex框架中,为了提高用户界面的灵活性与美观性,开发者经常需要处理列表数据的展示。Adobe Flex提供了一系列内置组件来帮助开发者轻松地实现这一...

    js动态条目添加

    3. **设置元素属性**:使用`.innerHTML`、`.textContent`或直接设置属性(如`.id`、`.class`)来赋予新元素内容和样式。 4. **插入元素**:最后,使用`.appendChild`、`.insertBefore`等方法将新元素添加到目标容器...

    Route命令是在本地 IP 路由表中显示和修改条目网络命令。

    Route 命令是 Windows 操作系统中的一种网络命令,用于显示和修改本地 IP 路由表中的条目。 Route 命令的主要功能是对本地 IP 路由表进行管理,包括添加、修改和删除路由条目。该命令可以用于设置静态路由、修改...

    listview多条目适配器

    listview多条目listview多条目listview多条目listview多条目listview多条目listview多条目

    QQ条目侧滑条目菜单

    QQ 会话条目的侧滑菜单实现原理就是 重写 LinearLayout 或者HorienzentalScrollView ,划出来的菜单无疑是已经摆放好,只是在屏幕的可见范围之外而已,我们只需要做做事件传递的工作和一些逻辑即可。源码主要以重写...

    Sqlite 实现 增加 和查找条目

    总结一下,SQLite 提供了方便的 API 来实现数据的增加和查找。通过创建表格,我们可以存储各种数据类型,然后使用 SQL 语句进行增删查改操作。在用户界面中集成这些功能,可以创建出一个简单但功能完整的数据管理...

    点击条目动画显示隐藏

    "点击条目动画显示隐藏"这个主题主要涉及到了Android自定义视图和动画效果的实现,尤其是针对列表项(ListView、RecyclerView等)的操作。以下是对这个主题的详细解释: 一、Android动画系统 Android提供了多种动画...

    andriod ListView条目点击变色demo

    这段代码会将当前被点击的条目背景设为蓝色(hozo_blue_light),同时将之前被选中的其他条目背景恢复为透明。这样,每次点击一个新条目时,只有当前选中的条目才会显示高亮颜色。 为了实现更复杂的样式,我们还...

    Listview添加倒计时条目

    总结,实现ListView的倒计时条目需要对Android的基础组件有深入的理解,包括自定义Adapter、线程管理、UI更新以及性能优化。通过以上步骤,你可以为每个ListView条目添加实时更新的倒计时,提升应用的交互性和信息...

    flex itemRenderer 渲染机制的概念和使用

    它可以根据每个数据对象的属性来生成相应的界面元素,这样我们就可以为列表中的每个条目提供独特的视觉样式和交互体验。itemRenderer通常与List、DataGrid等数据绑定组件一起使用,通过设置其`itemRenderer`属性来...

    Android-RecyclerView优雅的实现多条目布局

    10. **性能监控**:使用Android Profiler工具进行性能分析,检查内存泄漏、渲染性能和CPU使用情况,以确保在实现多条目布局时保持应用的高效运行。 总结,优雅地实现Android RecyclerView的多条目布局,需要理解其...

    高校咨询新闻条目设计.html

    高校咨询新闻条目设计.html

    条目侧滑删除效果

    通过设置边界和回调函数,我们可以控制条目的滑动范围和行为。 6. **动画效果**:为了让用户体验更加流畅,我们通常会添加一些动画效果,比如使用`ObjectAnimator`来平滑地改变删除按钮的可见性和位置。此外,还...

    RecyclerView拖动条目顺序+侧滑删除

    这包括在XML布局文件中添加RecyclerView,设置适配器(Adapter)和布局管理器(LayoutManager)。默认的LinearLayoutManager可以实现垂直滚动,如果需要水平布局,可以选择GridLayoutManager或...

    ListView视图动态增加与删除控件条目,内容

    在`getView()`方法中,我们可以为条目中的EditText设置一个`TextWatcher`监听器,监听文本变化。当文本发生变化时,更新对应的数据源,确保数据与视图同步。 6. 保存和恢复状态: 如果应用支持横竖屏切换或后台...

    多条目布局listview

    多条目布局listview

    RecyclerView2交换条目顺序与侧滑删除

    本教程将深入讲解如何实现RecyclerView中的两个关键功能:条目交换顺序和侧滑删除。 首先,我们要了解RecyclerView的基本结构。RecyclerView由Adapter、LayoutManager和ViewHolder三部分组成。Adapter负责填充数据...

    ACL和prefix-list抓取路由条目解析.doc

    在路由器配置和网络管理中,路由条目的过滤和属性修改是一项关键任务,这通常通过访问控制列表(Access Control Lists, ACLs)和前缀列表(Prefix Lists)来实现。这两种工具在路由策略中扮演着重要角色,它们允许...

Global site tag (gtag.js) - Google Analytics