`
bruce.peng
  • 浏览: 64517 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

只要是java程序员都会喜欢flex的.

    博客分类:
  • flex
阅读更多
在这里想表达的是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[
        //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
	{
            //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: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那种绚丽的效果.我非常看好和喜欢她!!
4
2
分享到:
评论
8 楼 chenlb 2008-06-06  
对,我也很喜欢,想找空学习学习.
7 楼 bruce.peng 2008-06-03  
每个子页面都定义<mx:state> 吗?我在父类有一个State的属性,会不会更好一些?
6 楼 cph8066 2008-06-02  
呵呵,那们兄台用牛刀杀鸡了。
其实你可以定义<mx:state>来改变页面的状态。比这轻松多了!
5 楼 bruce.peng 2008-06-01  
刚刚把我收集的flex学习网站放在上面了,有兴趣可以去看看。
http://bruce-peng.iteye.com/admin/blogs/199116
4 楼 jun154785415 2008-06-01  
请问能否给我一些flex的资料,谢谢了大哥,我是学习java的
3 楼 comeon 2008-06-01  
呵呵.基本上差不多,用XML+JAVA 都能实现. 用FLEX似乎容易实现点
2 楼 cema0110 2008-06-01  
面向对象的编程确实适合我们java程序员的胃口,但是flex开发大项目的时候还是有些不好的地方,最近就是在用flex开发。习惯了jsp的人用其flex来是烦死人了。首先就要从概念上完全转变过来。慢慢体会吧!
1 楼 Rooock 2008-06-01  
你好.
听了你的介绍让我涌出了学习Flex的冲动.
我是个JAVAer.对于不同JSP确有着相似功能的布局非常困惑.
一直觉得有更好的办法.但是都没找到.
直到看见你的文章,我觉得,就是它了!
请问,有没有Flex的资料.现在时间不等人.真想一口气吃成个胖子.

相关推荐

    Java程序员学习Flex和BlazeDS.doc

    Java程序员学习Flex和BlazeDS.doc

    java程序员试用期转正工作总结.doc

    在该项目中,Java 程序员主要负责 Web 端的模块开发,学习和掌握了 Flex 界面开发、Hibernate 和 Oracle 数据库等技术。此外,Java 程序员还学习了公司的企业文化和产品框架,并与同事沟通、学习经验,希望能更快地...

    (完整版)JAVA程序员英文简历.doc

    JAVA程序员英文简历分析 本资源摘要信息是基于给定的文件信息,分析了JAVA程序员英文简历的各个方面,涵盖了个人信息、技术栈、语言能力、职业经历、教育背景等多个方面。 一、个人信息 * 中文姓名:宋新煌 * ...

    Flex学习大礼包(flex基础教程、flex和java整合)--下载不扣分,童叟无欺

    下载不扣分,回帖加1分。 此压缩包, 【包括】 1&gt;一套Flex基础教程的PPT。 2&gt;FLEX和JAVA整合的技术...│ Flex.pdf │ J2EE项目整合FLEX项目.doc │ 在eclipse 的一个项目中同时开发j2ee模块和flex 客户端模块.doc │

    FLEX资源——Java程序员学Flex(上)

    博文链接:https://hacker47.iteye.com/blog/182364

    FLEX资源——Java程序员学Flex(下)

    博文链接:https://hacker47.iteye.com/blog/182371

    Flex与Java整合

    在分享这几种配置之前,先简单的介绍一下需要用到的...Flex+Java配置:第一种: Java工程和 Flex 工程独立,这种方式也是很多人使用的方式, Flex程序员和 Java程序员相互独立的工作.第二种:Flex工程加入 Java 元素.

    Foundation.Flex.for.Developers

    Flex程序员开发指南

    整合flex和java.pdf

    为一个 Java程序员学习 Flex,关心的就是怎样将 Flex和 Java进行结合交互。带着Java程序 员的思维,一开始学习 Flex 并没有按部就班的学习 Flex 的基础知识,而是想搞清楚 Flex 到 底怎样和 Java 交互的。经过了一个...

    JAVA程序员应当如何来选择RIA的开发环境

    RIA在Web应用体系结构中提供富客户端操作体验,其目标是整合桌面客户端和WEB应用程序的优势,而常用的开发技术就是如上提到的Java,JavaScript,Flash/Flex。AJAX既不是一个产品也不是一项新技术,但它确实是RIA体系...

    整合Flex和Java - 手把手教你配置

    作为一个Java程序员学习Flex,关心的就是怎样将Flex和Java进行结合交互,本文手把手教你如何整合Flex和Java。

    java试用期工作总结.doc

    Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进展复杂的编程。 我于xxxx年9月11日成为本公司技术部的一名程序员,三个月的试用期转眼就过去了。这段我人生中弥...

    flex入门经典教程

    不是自己写的,但是能够解决java程序员学习flex过程中的种种问题,经过本人验证完全适合阅读。

Global site tag (gtag.js) - Google Analytics