在这里想表达的是flex是一种面对对象的语言,我是一个java程序员,由于这点我真的很喜欢flex。
一个简单的例子。通常对某个事物进行Edit,View,Add的操作会在一个页面文件编写代码。
因为不同操作的页面都差不多。
当View时页面不可编辑,
当Edit时页面会填充之前对象的信息,
当Add时页面会是等待用户填充信息的。
Edit和Add可能会有Save Button,而View就不会有。
Edit和Add可以编辑,而View不能编辑。
Edit和View页面有对象的信息,而Add是空白信息,等待用户填写。
面对这些我们该如何设计呢?
(我画了UML图搞了半天,没贴上来.呵呵,博客新手来着)
这里我们需要一个父页面,布局,相同的页面元素(save,reset按扭等)放到父页面。
还有一些类似的操作和事件啊如reset(),saveOrUpdate(),validate()放到父页面,子页面可以重写.
这里先编写一个父类 PageItem.mxml,将一些子页面都会用到的属性,方法放在里面。
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Canvas
- xmlns:mx="http://www.adobe.com/2006/mxml"
- width="100%"
- height="100%"
- creationComplete="init();"
- >
-
- <mx:Metadata>
- [Event(name="javaeye_addBean", type="com.javaeye.events.DetailsSectionEvents")]
- [Event(name="javaeye_saveBean", type="com.javaeye.events.DetailsSectionEvents")]
- [Event(name="javaeye_updateBean", type="com.javaeye.events.DetailsSectionEvents")]
-
- </mx:Metadata>
- <mx:Script>
- <![CDATA[
-
-
-
- public static const ADD_MODE:String = "toAdd";
- public static const EDIT_MODE:String = "toEdit";
- public static const VIEW_MODE:String = "toView";
-
-
-
- public var javaeye_boxContent:Array;
-
- public var javaeye_boxButtons:Array;
-
-
-
-
-
- protected function init():void
- {}
-
-
-
- public function javaeye_changePageState(pageState:String):void
- {
- this.pageState = pageState;
- changeButtons(pageState);
- }
- public function javaeye_getPageState():String
- {
- return this.pageState;
- }
-
-
- protected function changeButtons(pageMode:String):void
- {}
-
- ]]>
- </mx:Script>
- </mx:Canvas>
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas
xmlns:mx="http://www.adobe.com/2006/mxml"
width="100%"
height="100%"
creationComplete="init();"
>
//自定义一些共有的事件
<mx:Metadata>
[Event(name="javaeye_addBean", type="com.javaeye.events.DetailsSectionEvents")]
[Event(name="javaeye_saveBean", type="com.javaeye.events.DetailsSectionEvents")]
[Event(name="javaeye_updateBean", type="com.javaeye.events.DetailsSectionEvents")]
//省略...
</mx:Metadata>
<mx:Script>
<![CDATA[
//import some class we need.
//表示页面状态的常数
public static const ADD_MODE:String = "toAdd";
public static const EDIT_MODE:String = "toEdit";
public static const VIEW_MODE:String = "toView";
//页面布局相同,并且很多相同页面元素控件,子页面继承使用。在此未提及
//Box Content
public var javaeye_boxContent:Array;
//Box Buttons
public var javaeye_boxButtons:Array;
/////////////////////////////////
// PAGE MANIPULATION FUNCTIONS //
/////////////////////////////////
/** function called upon creationComplete */
protected function init():void
{}
/** enable or disable the appropriate components
* according to pageState */
public function javaeye_changePageState(pageState:String):void
{
this.pageState = pageState;
changeButtons(pageState);
}
public function javaeye_getPageState():String
{
return this.pageState;
}
/** hide or show the appropriate action buttons
* in detail page according to pageState */
protected function changeButtons(pageMode:String):void
{}
//这里还有一些方法,saveOrUpdateItem,restForm(),validateForm().页面布局,页面元素 省略...
]]>
</mx:Script>
</mx:Canvas>
自定义事件类 DetailsSectionEvents
- package com.javaeye.events
- {
- import flash.events.Event;
-
- public class DetailsSectionEvents extends Event
- {
-
- public static const SAVE:String = "javaeye_saveBean";
- public static const UPDATE:String = "javaeye_updateBean";
-
-
- private var bean:Object;
-
- public function DetailsSectionEvents(type:String, bean:Object=null)
- {
- super(type,true);
- this.bean = bean;
- }
-
- override public function clone():Event
- {
- return new DetailsSectionEvents(type, bean);
- }
-
- public function cme_getBean():Object
- {
- return this.bean;
- }
- }
- }
package com.javaeye.events
{
import flash.events.Event;
public class DetailsSectionEvents extends Event
{
//Event Type
public static const SAVE:String = "javaeye_saveBean";
public static const UPDATE:String = "javaeye_updateBean";
//省略...
private var bean:Object;
public function DetailsSectionEvents(type:String, bean:Object=null)
{
super(type,true);
this.bean = bean;
}
override public function clone():Event
{
return new DetailsSectionEvents(type, bean);
}
//控制器监听并接受到事件时,可以得到当前的对象
public function cme_getBean():Object
{
return this.bean;
}
}
}
只要是正对某个对象View,Add或Edit的页面,都继承PageItem页面。
- <?xml version="1.0" encoding="utf-8"?>
-
- <pageItem:PageItem
- xmlns:mx="http://www.adobe.com/2006/mxml"
- >
-
- <mx:Script>
- <![CDATA[
- override public function javaeye_changePageState(flag:String):void
- {
- super.javaeye_changePageState(flag);
-
- if(flag==PageItem.ADD_MODE)
- {
-
- }else if(flag==PageItem.EDIT_MODE)
- {
-
- }
- else if(flag==PageItem.VIEW_MODE)
- {
-
- }
- }
-
- override protected function changeButtons(flag:String):void
- {
- if(flag==DetailPageItem.VIEW_MODE)
- {
-
- showUIComponent(btnDone,false);
- showUIComponent(btnReset,false);
- }
- else if(flag==DetailPageItem.ADD_MODE||flag==DetailPageItem.EDIT_MODE)
- {
- showUIComponent(btnDone,true);
- showUIComponent(btnReset,true);
- }
- }
-
-
- override protected function saveOrUpdateItem():void
- {
-
- Object formObj = fillObject();
-
- dispatchEvent(new DetailsSectionEvents(DetailsSectionEvents.SAVE,formObj));
- }
-
- ]]>
- </mx:Script>
-
- <pageItem:cme_boxContent>
- <mx:HBox width="100%" paddingRight="22" verticalGap="5" horizontalGap="5">
-
- </mx:HBox>
- </pageItem:cme_boxContent>
- <pageItem:cme_boxButtons>
-
- <navigation:ButtonItem id="btnDone" javaeye_type="save" click="saveOrUpdateItem();" />
- <navigation:ButtonItem id="btnReset" javaeye_type="reset" click="reset();" />
- </pageItem:cme_boxButtons>
<?xml version="1.0" encoding="utf-8"?>
//继承了PageItem类
<pageItem:PageItem
xmlns:mx="http://www.adobe.com/2006/mxml"
>
<mx:Script>
<![CDATA[
override public function javaeye_changePageState(flag:String):void
{
super.javaeye_changePageState(flag);
if(flag==PageItem.ADD_MODE)
{
//设置Add状态时页面元素的状态,visible and includeInLayout 等
}else if(flag==PageItem.EDIT_MODE)
{
//设置Edit状态时页面元素的状态,
}
else if(flag==PageItem.VIEW_MODE)
{
//设置view状态时页面元素的状态,
}
}
override protected function changeButtons(flag:String):void
{
if(flag==DetailPageItem.VIEW_MODE)
{
//设置控件是否可见,是否加载
showUIComponent(btnDone,false);
showUIComponent(btnReset,false);
}
else if(flag==DetailPageItem.ADD_MODE||flag==DetailPageItem.EDIT_MODE)
{
showUIComponent(btnDone,true);
showUIComponent(btnReset,true);
}
}
//save 按钮点击时出发的事件
override protected function saveOrUpdateItem():void
{
//将页面的信息填充到form中
Object formObj = fillObject();
//抛出事件,并且将Bean传递.control通过事件类型对Bean进行不同操作。
dispatchEvent(new DetailsSectionEvents(DetailsSectionEvents.SAVE,formObj));
}
]]>
</mx:Script>
<pageItem:cme_boxContent>
<mx:HBox width="100%" paddingRight="22" verticalGap="5" horizontalGap="5">
//页面元素继承并扩展父类的.省略....
</mx:HBox>
</pageItem:cme_boxContent>
<pageItem:cme_boxButtons>
//按钮继承ButtonItem.mxml.
<navigation:ButtonItem id="btnDone" javaeye_type="save" click="saveOrUpdateItem();" />
<navigation:ButtonItem id="btnReset" javaeye_type="reset" click="reset();" />
</pageItem:cme_boxButtons>
这里涉及到了继承和多态。等我辞工后,想仔细认真学习下设计模式,并将他运用到自己的flex工程中...
flex面对对象的编程思想,还有flex那种绚丽的效果.我非常看好和喜欢她!!
相关推荐
在该项目中,Java 程序员主要负责 Web 端的模块开发,学习和掌握了 Flex 界面开发、Hibernate 和 Oracle 数据库等技术。此外,Java 程序员还学习了公司的企业文化和产品框架,并与同事沟通、学习经验,希望能更快地...
Java程序员在学习和成长过程中需要掌握的技术和知识点是全面且深入的。从基础的前端技术到后端服务器架构,再到开发工具和开发流程,每一项都是Java程序员成长道路上不可或缺的部分。以下详细解析了Java程序员需要...
博文链接:https://hacker47.iteye.com/blog/182364
博文链接:https://hacker47.iteye.com/blog/182371
这种模式下,Flex程序员和Java程序员可以独立工作,配置资料网络上已经很丰富,本文不再赘述。 **第二步**:将Java元素融入Flex工程。 1. 在Flex视图中,新建一个Flex项目,并指定Java源码的根目录。在Flex ...
【Java程序员转正工作总结】 作为一名Java程序员,转正不仅是对工作能力的认可,更是个人职业发展的重要里程碑。在2022年的转正工作总结中,我们可以看到这位程序员在多个方面都有所提升,以下是对这些关键点的详细...
【Java程序员试用期工作总结】 作为一名Java程序员,试用期是一个关键阶段,它不仅涉及到技能的磨练,还包括对工作流程、团队协作和公司文化的适应。以下是对试用期内所涉及的重要知识点的详细阐述: 1. **面向...
2>具有FLEX基础的JAVA程序员 3>具有JAVA基础的FLEX程序员 4>JAVA程序员 4>FLEX程序员 【目录如下】 Flex大礼包 └─Flex教程 第01章 Flex简介.ppt 第02章 MXML.ppt 第03章 ActionScript 3.0.ppt 第04章 Flex中的...
JAVA程序员英文简历分析 本资源摘要信息是基于给定的文件信息,分析了JAVA程序员英文简历的各个方面,涵盖了个人信息、技术栈、语言能力、职业经历、教育背景等多个方面。 一、个人信息 * 中文姓名:宋新煌 * ...
这是最常见的整合方式,Flex程序员与Java程序员分别负责前端与后端的开发,最后将两者整合在一起。 ##### 方式二:Flex项目加入Java元素 此方式适合团队协作开发,具体步骤如下: 1. **新建Flex项目**:在...
【Java程序员实习总结】 作为一名Java程序员,实习是理论与实践结合的重要阶段,是提升个人专业技能的关键时期。在实习期间,我深入理解了Java开发语言和环境,通过实际项目锻炼了编程能力,同时对公司的开发流程和...
作为一名Java程序员,试用期转正的工作总结是对个人在试用期内的工作表现、学习成果以及问题反思的重要记录。以下是对这段工作总结的详细解读: 1. **技术学习与掌握**: - Java开发语言:在试用期内,员工掌握了...