• 组合模式(composite)


    我中午吃六两饭,猪肉炖粉条,辣子鸡,鱼丸,咸鸭蛋,外加两杯酸奶(猪!)
    这些东西都是对象,他们共同组成了我的午饭。

    举例:应该说在Flash里组合模式是无处不在的,因为只要还有mc的嵌套,就有组合模式存在。几个mc装在一个mc里,这个装载用的mc称作容器。
    但是就这么说,恐怕没人会重视这个模式,因为不管理不理解他我们都在用。他的确有很多种实现方式,我的方式之一是这样的。

    //blog.as
    class Blog extends BaseMovie {
        
    //blog第一界面,包括日记列表,日历,最近留言
        var mcBlogList: mcBlogList;
        
    //blog第二界面,包括日记全文,回复,对该日记的留言。
        var mcBlogDairy:MovieClip;
        var currentState:String;
        var currentDairyID:Number;
        function blog(){
        }
    }
     
    //mcBlogList.as
    //blog第一界面
    class mcBlogList extends BaseMovie {
        
    //最近留言
        var recentMsgs:blogMsgsSC;
        
    //日记列表
        var blogList:BlogList;
        
    //日历
        var calendar:CalenderForBlog;
         

    //mcblogDairy.as
    //blog第二界面
    class mcBlogDairy extends BaseMovie {
        
    //日记全文显示
        var BlogDairy:BlogDairy;
        
    //留言板
        var GuestBook:BlogInputMsg;
        
    //留言列表显示
        var BlogMsgs:BlogMsgs;
    }

    然后里面每个组件都还包含另外的组件,比如滚动条,动态文本框什么的,我想说的是,我写在as里的mc嵌套模式并不一定就符合fla文件里的具体物理嵌套模式,有很多装饰性的mc不需要包含进来,也有很多具体原因,需要改写路径。比如在BlogDairy下,滚动条的实际路径是 BlogDairy.mc1.ScrollBar,不做成BlogDairy.ScrollBar可能是因为我需要mc1的动画,也可能是别的具体原因。但是我们可以在mc1的时间轴上加一句

    _parent. ScrollBar =This.ScrollBar

    把路径指向改写,达到我们要使用的模式,ScrollBar就是BlogDairy的直接成员。另外我没有语句初始化mc,我习惯在库里设置mc的linkage。

    备注:虽然组合模式是每个人必不可少要用的,但正因为如此,我们可以想出他更多更好更灵活的实现方式

  • 相关阅读:
    5.21动态生成dll
    xtype:"combo" 动态加载
    用javascript 禁止右键,禁止复制,禁止粘贴
    页面正在载入(js代码)
    Ext.data.Store
    转 C#生成JSON数据格式的函数
    .Net 3.5环境下常用数组性能测试
    Lucene.Net 2.3.1开发介绍 —— 二、分词(六)
    Lucene.Net 2.3.1开发介绍 —— 三、索引(三)
    Lucene.Net 2.3.1开发介绍 —— 三、索引(二)
  • 原文地址:https://www.cnblogs.com/sevenyuan/p/1608748.html
Copyright © 2020-2023  润新知