??xml version="1.0" encoding="utf-8" standalone="yes"?>中文字幕在线第一页,av免费在线一区,国产精品一区二区久久国产http://www.aygfsteel.com/freeman1984/category/43586.html STANDING ON THE SHOULDERS OF GIANTSzh-cnSun, 09 Oct 2011 11:11:24 GMTSun, 09 Oct 2011 11:11:24 GMT60Flex通信-与Java实现Socket通信实例 http://www.aygfsteel.com/freeman1984/archive/2011/10/09/360300.html@joe@joeSun, 09 Oct 2011 09:28:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2011/10/09/360300.htmlhttp://www.aygfsteel.com/freeman1984/comments/360300.htmlhttp://www.aygfsteel.com/freeman1984/archive/2011/10/09/360300.html#Feedback0http://www.aygfsteel.com/freeman1984/comments/commentRss/360300.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/360300.html阅读全文

@joe 2011-10-09 17:28 发表评论
]]>
Flex通信-Java服务端通信实例 http://www.aygfsteel.com/freeman1984/archive/2011/10/09/360298.html@joe@joeSun, 09 Oct 2011 09:23:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2011/10/09/360298.htmlhttp://www.aygfsteel.com/freeman1984/comments/360298.htmlhttp://www.aygfsteel.com/freeman1984/archive/2011/10/09/360298.html#Feedback0http://www.aygfsteel.com/freeman1984/comments/commentRss/360298.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/360298.html阅读全文

@joe 2011-10-09 17:23 发表评论
]]>
Flex4基础-ActionScript语法 http://www.aygfsteel.com/freeman1984/archive/2011/10/09/360290.html@joe@joeSun, 09 Oct 2011 08:53:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2011/10/09/360290.htmlhttp://www.aygfsteel.com/freeman1984/comments/360290.htmlhttp://www.aygfsteel.com/freeman1984/archive/2011/10/09/360290.html#Feedback0http://www.aygfsteel.com/freeman1984/comments/commentRss/360290.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/360290.html
  • ?/span> 
  •    Flex是高效、免贏V开源的框架Q广泛用于生成移动?/span>web和桌面^台的应用E序。,它可以开发h员创建利?/span> Adobe® Flash® Player 9 作ؓ前台?#8220;富客L互联|应用程?/span>/rich Internet applications/RIA”Q以满用户更ؓ直观和极具交互性的在线体验。简单的_Flex是用来~写flashE序的框Ӟ非常适合软g开发h员用?/span>

        开?/span>Flex 应用E序的典型步骤如下(通常是这PQ?/span>  

    1.  选取一pd预先定制好的、用于设计应用程序界面的lgQ如表格、按钮等{)

    2.  布置lg以设计用L面?/span>

    3.  使用样式和主题来增强视觉斚w的设计?/span>

    4.  d动态行为(例如E序部g之间的相互作用)?/span>

    5.  定义q连接所需的数据库服务?/span>

    6.  源代码~译?/span>SWF 文gQ然后在Flash Player 中运行?/span>


            
    一个典型的Flex 应用E序包括如下元素Q?/span>

    1. Flex framework

    Adobe® Flex 2 framework 包含了创?/span>RIA 所需要的所有组Ӟ它们是:用于应用E序布局规划的容器;针对用户界面和从用户处获取数据的控制Q例如文本框和按钮)Q广泛支持的数据l定、数据格式化、以及有效值验证;事g驱动的开发模式?/span>Flex framework 被包含在公用lg库(SWCQ文件中?/span>

    2. MXML

    每个Flex 应用E序臛_包含有一?/span>MXML 文gQ它被作E序的主文g?/span>MXML是一U标记语aQ它是基?/span>XML 的一U实玎ͼ用来创徏Flex 应用E序。你可以使用它去声明E序中所使用的标{构的定义?/span>

    3. ActionScript 3.0

    你可以?/span>ActionScript 3.0 为应用程序添加动态行为,它是ZECMAScript 的一U实玎ͼcM?/span>JavaScript。你可以?/span>ActionScript 作ؓ一个脚本块Q在MXML 文g中直接进行添加;或者创Z个单独的ActionScript 文gQ然后将它们导入?/span>MXML 文g中?/span>

    4. CSS

    你可以通过讄lg的属性(propertiesQ来改变lgQ按钮、列表框{)的视觉样式。例如,按钮lg有一?/span>fontFamily 属性,你可以用它来进行字体的讄。样式的属性通常有四U方法来q行控制Q通过主题(theme)Q在CSS 文g中进行定义;?/span>MXML 文g中的样式块中q行定义Q在lg的实例中q行讄?/span>MXML 样式的定义和使用遵@?/span>W3C Cascading Style SheetsQ?/span>CSSQ标?/span>?/span>

    5.  囑Ş资源

    与很多应用程序一PFlex 包含了各U各L囑Ş资源Q如图标和图象?/span>

    6.  数据

    一些组件被使用来进行数据显C(combo box 或?/span>data gridQ的工作。同Ӟ你还可以使用各种方式来将q些lg与数据联pv来,如用数l、收集对象、数据模型、以及外?/span>XML 数据资源Q等{?/span>

    下图是一?/span>MXML的简单例子,点击定按钮后会弹出一个提C框Q?br />

    • 基础语法

    ActionScript实现了面向对象编E(OOPQ的支持Q一?/span>MXML是一个对象,MXML中的一个标{(比如button?/span>textInputQ也是一个对象,对于学习q?/span>JAVA?/span>C#{面向对象语a的程序员上手非常快?/span>

             AS的关键字?/span>JAVA怼Q但是方法、变量的定义有所不同Q?/span>AS的定义方式ؓQ【对象名:对象cR【方法名():q回cd】的格式Q下面是一个简单的ASc:

     

     
    1. package demo   
    2. {   
    3.     import mx.core.IButton;   
    4.     import spark.components.Button;   
    5.   
    6.     //定义cDemoQ承实现类和接?  
    7.     public class Demo extends Button implements IButton   
    8.     {   
    9.         //构造函?  
    10.         public function Demo()   
    11.         {   
    12.             super();   
    13.         }   
    14.         //帔R   
    15.         public  static const NAME:String = "name";   
    16.         //变量   
    17.         private var names:String;   
    18.         //带参Ҏ   
    19.         protected function demoMethod(value:int):int{   
    20.             return value;   
    21.         }   
    22.         //无参Ҏ   
    23.         public function getButton():Button{   
    24.             return new Button();   
    25.         }   
    26.     }   
    27. }  

     上面是一个独立的ASc,一个独立的cL件命名ؓQ类?/span>.as?/span>

     ?/span>MXML?/span><script>脚本中可以通过new Demo()的Ş式实例化该对象?/span>

    creationComplete事gQ该事g?/span>html?/span>body标签?/span>onload事gcMQ在当前应用E序启动完成后触发?/span>

    trace(String)ҎQ在调试模式Q向控制台打印消息,cM?/span>JAVA?/span>System.out.print()?/span>

    新徏一?/span>mxml文gQ在文g中写下如下代码,使用调试模式启动当前文gQ启动应用程序后Q在控制台能够看?#8220;启动demo.mxml文g”的提C?/span>

    • 常用基础Q非基础Q数据类?/span>

    ?/span>AS3中最常用的数据类型有以下几种Q?/span>

    基础数据cdQ?/span>Boolean?/span>String?/span>int?/span>uint?/span>Number{?/span>

    复杂数据cdQ?/span>Object?/span>Array ?/span>ArrayCollection 

    BooleanQ布|分ؓtrue/false两种

    StringQ字W串Q这个不多说?/span>

    intQ带W号?/span>32位整敎ͼ数D_-2147483648~2147483647

    uintQ不带符L32位整敎ͼ数D_0~4294967265

    NumberQ?/span>64位QҎ

    ObjectQ?/span>AS所有类的基c,{同?/span>JAVA?/span>Objectc?/span>

              ArrayQ非cd化数据,同一个数l对象允许装不同cd的数?/span>

    Java代码  
    1. /**    
    2.      * 数组(同一数组的|flex支持不同数据cd)    
    3.      */     
    4.     var d:Array = new Array("a","b",1);      
    5.     trace("数组长度Q?+d.length+"   数组内容Q?+d)      
    6.     //pushҎQ向数组中添加新|q返回数l长?nbsp;     
    7.     trace("d新|"+d.push(2,3));      
    8.     //popҎQ删除最后一条数l的?nbsp;     
    9.     trace("L后一条数l|"+d.pop());      
    10.     //reverse把数l的值倒{q去      
    11.     trace("数组反{Q?+d.reverse());  

     ArrayCollectionQ集合对象,?/span>JAVA?/span>ArrayListcMQ常用来动态封装数?/span>

    Java代码  
    1. **     
    2.      * List集合     
    3.      */     
    4.     var e:ArrayCollection = new ArrayCollection([{id:1,name:"kaka"},{id:2,name:"soga"}]);      
    5.     trace("List初始长度:"+e.length);      
    6.     //在list末尾d数据      
    7.     e.addItem({id:3,name:"nani"});      
    8.     //在指定位|添加数l?nbsp;     
    9.     e.addItemAt({id:4,name:"sodesi"},2);      
    10.     //removeItemAt删除指定位置的listQremoveAll删除list所有的?nbsp;     
    11.     e.removeItemAt(3); e.removeAll();      
    12.     trace("List最l长度:"+e.length);  

     不同数据cd的默认值有所不同看如下代码:

    Java代码  
    1. var b:Boolean;   
    2.                 var s:String;   
    3.                 var i:int;   
    4.                 var n:Number;   
    5.                 var o:Object;   
    6.                 var a;   
    7.                 trace("Boolean默认|"+b);   
    8.                 trace("String默认|"+s);   
    9.                 trace("int默认|"+i);   
    10.                 trace("Number默认|"+n);   
    11.                 trace("a默认|"+a);   
    12.                 trace("Object默认|"+o);  

     

    q行l果如下Q?/span>

    Boolean默认|false

    String默认|null

    int默认|0

    Number默认|NaN

    a默认|undefined

    Object默认|null

     

    【注意?/span>

    点数比整数消耗的g资源要多Q所以尽量?/span>int?/span>uint来表C整数?/span>

    Number?/span>JAVA中的double同样存在_ֺ问题Q数值相差过大的点数相加的l果可能有偏差?/span>

             AS3Ҏ传递,寚w基础数据cd是传引用Q即对象在方法内的D改变Q外面的g会改变)Q对基础数据cd是传|卛_象在Ҏ内的值改变,外面的g不受影响Q?/span>

    • q算W和表达?/span>

    q算W:AS3的运符?/span>JAVA?/span>C#{非常相|?/span>(+)?/span>(-)?/span>(*)?/span>(/)、赋?/span>(=)、自?/span>(++)自减(--)、关p运符(>,<,>=,<=)、逻辑q算W?/span>(&&,||,!){等?/span>

    关键?/span>is用语判断当前对象属于什么类型:

    Java代码  
    1. var b:int = 2;      
    2. b as Number;       
    3. trace("b变量是intcd?"+(b is int));      
    4. trace("b变量是numbercd?"+(b is Number));  

     表达式:AS也拥有丰富的表达式,如常用的if?/span>while?/span>switch?/span>for循环Q实例代码如下:

     

    Java代码  /**    
    1.      * 条g控制语句Qas中switch语句很给力,允许比较字符串等  
    2.      */     
    3.     var f:String = "asd";      
    4.     switch(f){      
    5.         case "asd":      
    6.             trace("switch:asd");      
    7.             break;      
    8.         default:      
    9.             trace("switch:default");      
    10.             break;      
    11.     }      
    12.     //三目q算...      
    13.     f=="asd"?trace("f==asd"):trace("f!=asd");      
    14.           
    15.     /**    
    16.      * 循环语句    
    17.      */     
    18.     for(var i:int=1;i<=3;i++){      
    19.         trace("for循环:"+i);      
    20.     }      
    21.     //for in循环      
    22.     var g:Array = new Array("a1","b2","c3");      
    23.     for(var j:String in g){      
    24.         //注意Qj是获得烦引?nbsp;     
    25.         trace("for in:"+g[j]);      
    26.     }      
    27.     //for each循环      
    28.     for each (var item:String in g) {       
    29.         trace("for each循环"+item);       
    30.     }  

    ?/p>

    for…in?/span>for each…in用于枚D一个集合的数据Q?/span>for…in枚D出的是集合的下标位置Q?/span>for each…in枚D出集合的倹{?/span>for each…incM?/span>JAVA?/span>for(xx in oo)?/span>C#?/span>foreach(xx in oo)?/span>

    注意?/span>

    • 事g处理机制

    Flex标签元素?/span>html元素怼Q都有自q事g触发机制Qƈ且创建方式也怼Q通常Flex标签创徏事g有两U方式:一U是在标{中定义事g触发属性,另一U是?/span>ActionScript中调用事件触发方法,下面看代码:

    Java代码  
    1. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"    
    2.                xmlns:s="library://ns.adobe.com/flex/spark"    
    3.                xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"  
    4.                creationComplete="init(event)">   
    5.     <fx:Script>   
    6.         <![CDATA[   
    7.             import mx.controls.Alert;   
    8.             import mx.events.FlexEvent;   
    9.                
    10.             protected function sure_clickHandler(event:MouseEvent):void  
    11.             {   
    12.                 sure.label = "鼠标点击事gQ?;   
    13.             }   
    14.                
    15.             protected function init(event:FlexEvent):void  
    16.             {   
    17.                 this.sure.addEventListener(MouseEvent.MOUSE_OVER,function sure_mouseover(event:MouseEvent):void{   
    18.                     sure.label = "鼠标UM事gQ?;   
    19.                 });   
    20.             }   
    21.         ]]>   
    22.     </fx:Script>   
    23.        
    24.     <s:Button x="82" y="52" label="定" id="sure" click="sure_clickHandler(event)" />   
    25. </s:Application>  

     Java-Flex对象对应?


    以上仅仅?/span>Flex的基知识Q要想用?/span>Flex?/span>ActionscriptQ则必须学好面向对象~程思想Q这样写出来的代码才会优雅、效率、可dl护?br />转蝲自:http://blessht.iteye.com/blog/1130171


    @joe 2011-10-09 16:53 发表评论
    ]]>
    flex数据cd说明 http://www.aygfsteel.com/freeman1984/archive/2011/10/09/360289.html@joe@joeSun, 09 Oct 2011 08:37:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2011/10/09/360289.htmlhttp://www.aygfsteel.com/freeman1984/comments/360289.htmlhttp://www.aygfsteel.com/freeman1984/archive/2011/10/09/360289.html#Feedback0http://www.aygfsteel.com/freeman1984/comments/commentRss/360289.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/360289.html数据cd说明

    基元数据cd包括
    1. Boolean?nbsp; 
    2. int、Null?nbsp; 
    3. Number?nbsp; 
    4. String?nbsp; 
    5. uint   
    6.  void 
    ActionScript核心c还定义下列复杂数据cdQ?

    1. Object?nbsp; 
    2. Array?nbsp; 
    3. Date?nbsp; 
    4. Error?nbsp; 
    5. Function?nbsp; 
    6. RegExp?nbsp; 
    7. XML  XMLList?nbsp;


    Boolean 数据cd
    Boolean 数据cd包含两个|true ?false 。对?Boolean cd的变量,其它M值都是无效的。已l声明但

    未初始化的布尔变量的默认值是 false ?

    int 数据cd
    int 数据cd在内部存储ؓ 32 位整敎ͼ它包含一l介?-2,147,483,648 (-231 ) ?2,147,483,647 (231 - 1)

    之间的整敎ͼ包括 -2,147,483,648 ?2,147,483,647Q。早期的 ActionScript 版本仅提?Number 数据cdQ该

    数据cd既可用于整数又可用于点数。在 ActionScript 3.0 中,现在可以讉K 32 位带W号整数和无W号整数?/p>

    低位机器cd。如果您的变量将不会使用点敎ͼ那么Q?int 数据cd来代?Number 数据cd应会更快更高

    效?

    对于于 int 的最值或大于 int 的最大值的整数|应?Number 数据cd。Number 数据cd可以处理 -

    9,007,199,254,740,992 ?9,007,199,254,740,992Q?3 位整数|之间的倹{int 数据cd的变量的默认值是 0

    ?

    Null 数据cd
    Null 数据cd仅包含一个|null 。这?String 数据cd和用来定义复杂数据类型的所有类Q包?Object c)

    的默认倹{其它基元数据类型(?Boolean、Number、int ?uintQ均不包?null 倹{如果您试?Boolean?/p>

    Number、int ?uint cd的变量赋?null Q则 Flash Player 会将 null D{换ؓ相应的默认倹{不能将 Null

    数据cd用作cd注释?

    Number 数据cd
    ?ActionScript 3.0 中,Number 数据cd可以表示整数、无W号整数和QҎ。但是,Z可能提高性能Q应

    ?Number 数据cd仅用于QҎQ或者用?int ?uint cd可以存储的、大?32 位的整数倹{要存储点?/p>

    Q数字中应包括一个小数点。如果您省略了小数点Q数字将存储为整数?

    Number 数据cd使用?IEEE 二进制Q点算术标?(IEEE-754) 指定?64 位双_ֺ格式。此标准规定如何使用 64

    个可用位来存储QҎ。其中的 1 位用来指定数字是正数q是负数?1 位用于指敎ͼ它以二进制的形式存储。其?/p>

    ?52 位用于存?有效位数"Q又UCؓ"数"Q,有效位数?2 ?N ơ幂QN 卛_面所提到的指数?

    可以?Number 数据cd的所有位都用于有效位敎ͼ也可以将 Number 数据cd的某些位用于存储指数Q后者可存储

    的QҎ比前者大得多。例如,如果 Number 数据cd使用全部 64 位来存储有效位数Q则它可以存储的最大数字ؓ

    265 - 1。如果用其中的 11 位来存储指数Q则 Number 数据cd可以存储的最大有效数字ؓ 21023 ?

    Number cd可以表示的最值和最大值存储在 Number cȝ名ؓ Number.MAX_VALUE ?Number.MIN_VALUE 的静?/p>

    属性中?

    Number.MAX_VALUE == 1.79769313486231e+308 Number.MIN_VALUE == 4.940656458412467e-324管q个数字范围?/p>

    大,但代h此范围的_ֺ有所降低。Number 数据cd使用 52 位来存储有效位数Q因此,那些要求?52 位以?/p>

    的位数才能精表C的数字Q如分数 1/3Q将只是q似倹{如果应用程序要求小数达到绝对精度,则需要用实现小

    数Q点算术(而非二进制Q点算术)的Y件?

    如果?Number 数据cd来存储整数|则仅使用 52 位有效位数。Number 数据cd使用 52 位和一个特D的隐藏

    位来表示介于 -9,007,199,254,740,992 (-253 ) ?9,007,199,254,740,992 (253 ) 之间的整数?

    Flash Player 不但?NaN 值用?Number cd的变量的默认|而且q将其用作应q回数字、却没有q回数字的Q

    何运的l果。例如,如果您尝试计负数的qx根,l果是 NaN 。其它特D的 Number 值包?正无I大"??/p>

    无穷??

    注意
      在被 0 除时Q如果被除数也是 0 Q则l果只有一个,那就?NaN 。在?0 除时Q如果被除数是正敎ͼ则结果ؓ

    正无I大 Q如果被除数是负敎ͼ则结果ؓ负无I大 ?


    String 数据cd
    String 数据cd表示一?16 位字W的序列。字W串在内部存储ؓ Unicode 字符Qƈ使用 UTF-16 格式。字W串?/p>

    不可改变的|像?Java ~程语言中一栗对字符串值执行运会q回字符串的一个新实例。用 String 数据c?/p>

    型声明的变量的默认值是 null 。虽?null gI字W串 ("" ) 均表C没有Q何字W,但二者ƈ不相同?

    uint 数据cd
    uint 数据cd在内部存储ؓ 32 位无W号整数Q它包含一l介?0 ?4,294,967,295 (232 - 1) 之间的整敎ͼ?/p>

    ?0 ?4,294,967,295Q。uint 数据cd可用于要求非负整数的Ҏ情Ş。例如,必须使用 uint 数据cd来表C?/p>

    像素颜色|因ؓ int 数据cd有一个内部符号位Q该W号位ƈ不适合处理颜色倹{对于大?uint 的最大值的?/p>

    数|应?Number 数据cdQ该数据cd可以处理 53 位整数倹{uint 数据cd的变量的默认值是 0?

    void 数据cd
    void 数据cd仅包含一个|undefined 。在早期?ActionScript 版本中,undefined ?Object cd例的默认

    倹{在 ActionScript 3.0 中,Object 实例的默认值是 null 。如果您试?undefined 赋予 Object cȝ实例

    QFlash Player 会将该D{换ؓ null 。您只能为无cd变量赋予 undefined q一倹{无cd变量是指~Zcd?/p>

    释或者用星?(* ) 作ؓcd注释的变量。只能将 void 用作q回cd注释?

    Object 数据cd
    Object 数据cd是由 Object cd义的。Object cȝ?ActionScript 中的所有类定义的基cRActionScript 3.0

    中的 Object 数据cd与早期版本中?Object 数据cd存在以下三方面的区别Q第一QObject 数据cd不再是指

    定给没有cd注释的变量的默认数据cd。第二,Object 数据cd不再包括 undefined q一|该g前是

    Object 实例的默认倹{第三,?ActionScript 3.0 中,Object cd例的默认值是 null ?

    在早期的 ActionScript 版本中,会自动ؓ没有cd注释的变量赋?Object 数据cd。ActionScript 3.0 现在?/p>

    括真正无cd变量q一概念Q因此不再ؓ没有cd注释的变量赋?Object 数据cd。没有类型注释的变量现在被视

    为无cd变量。如果您希望向代码的读者清楚地表明您是故意变量保留ؓ无类型,可以使用新的星号 (* ) 表示c?/p>

    型注释,q与省略cd注释{效。下面的CZ昄两条{效的语句,两者都声明一个无cd变量 x Q?
    var x  
    var x:* 
    转蝲自:iteye



    @joe 2011-10-09 16:37 发表评论
    ]]>
    Flex Builder 4.5 序列?及Adobe所有品注册码生成?http://www.aygfsteel.com/freeman1984/archive/2011/10/05/360047.html@joe@joeWed, 05 Oct 2011 10:48:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2011/10/05/360047.htmlhttp://www.aygfsteel.com/freeman1984/comments/360047.htmlhttp://www.aygfsteel.com/freeman1984/archive/2011/10/05/360047.html#Feedback0http://www.aygfsteel.com/freeman1984/comments/commentRss/360047.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/360047.html先在C:\Windows\System32\drivers\etc的hosts文g中添加以下内容,Q用C本打开pQ:

    127.0.0.1 activate.adobe.com
    127.0.0.1 practivate.adobe.com
    127.0.0.1 ereg.adobe.com
    127.0.0.1 activate.wip3.adobe.com
    127.0.0.1 wip3.adobe.com
    127.0.0.1 3dns-3.adobe.com
    127.0.0.1 3dns-2.adobe.com
    127.0.0.1 adobe-dns.adobe.com
    127.0.0.1 adobe-dns-2.adobe.com
    127.0.0.1 adobe-dns-3.adobe.com
    127.0.0.1 ereg.wip3.adobe.com
    127.0.0.1 activate-sea.adobe.com
    127.0.0.1 wwis-dubc1-vip60.adobe.com
    127.0.0.1 activate-sjc0.ado

     

    为方便大Ӟ提供几个注册码:
    1424-4938-3077-5736-3940-5640
    1424-4827-8874-7387-0243-7331
    注册机:
    /Files/freeman1984/AdobeKey.rar



    @joe 2011-10-05 18:48 发表评论
    ]]>
    使用BlazeDS实现Java和Flex通信Q{载)http://www.aygfsteel.com/freeman1984/archive/2010/01/13/309331.html@joe@joeWed, 13 Jan 2010 09:22:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2010/01/13/309331.htmlhttp://www.aygfsteel.com/freeman1984/comments/309331.htmlhttp://www.aygfsteel.com/freeman1984/archive/2010/01/13/309331.html#Feedback0http://www.aygfsteel.com/freeman1984/comments/commentRss/309331.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/309331.html转蝲地址Q?font style="background-color: #cce8cf">http://www.yeeach.com/2009/07/21/%e4%bd%bf%e7%94%a8blazeds%e5%ae%9e%e7%8e%b0java%e5%92%8cflex%e9%80%9a%e4%bf%a1%e4%b9%8bhello-world/

    新的目对用户体验及用户互动要求较高Q决定选用Flex作ؓ前端的展现技术,整体框架仍然是Flex+Spring+Hibernate(考虑采用seam?。作为入门,先从l典的Hello world开始,暂时不考虑Flex与Spring、Hibernate的集成?/p>

    Flex要实CJava集成Q开源项?a onclick="javascript:pageTracker._trackPageview('/outbound/article/http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/');" >BlazeDS?a onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.graniteds.org');" >GraniteDS?a onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.exadel.com/web/portal/flamingo');" >Flamingo都提供了相应的解x案,考虑到BlazeDS是Adobe官方的开源项目,因此采用BlazeDs作ؓFlex与Java通信的基框架。什么是BlazeDS呢,看看官方的介l:

    BlazeDS is the server-based Java remoting and web messaging technology that enables developers to easily connect to back-end distributed data and push data in real-time to Adobe® Flex® and Adobe AIR™ applications for more responsive rich Internet application (RIA) experiences.

    开发工具采用Eclipse+Flex Builder 3 Plug-in方式Q不采用Flex Builder 3。先安装EclipseQ再安装Flex Builder 3 Plug-inQ相关的安装配置不再赘述?/p>

    1、下载BlazeDS

    下蝲BlazeDS Turnkey Q?a title="http://flexorg.wip3.adobe.com/blazeds/3.0.x/milestone/3978/blazeds-turnkey-3.2.0.3978.zip" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://flexorg.wip3.adobe.com/blazeds/3.0.x/milestone/3978/blazeds-turnkey-3.2.0.3978.zip');" >http://flexorg.wip3.adobe.com/blazeds/3.0.x/milestone/3978/blazeds-turnkey-3.2.0.3978.zip

    ׃BlazeDS Turnkey中包含BlazeDS的用例子,对于入门熟悉Flex及BlazeDS都有较好的参考h|因此下蝲BlazeDS Turnkey?/p>

    关于blazeds-turnkey 的目录说明:

    docsQBlazeDS Javadoc

    resourcesQBlazeDS的相x持包Q包括clusteringQ采用jgroupsQ、BlazeDS与ColdFusion 集成的配|文件、BlazeDS的配|文件、BlazeDS与AJAX集成的桥、Flex的SDK、Flex的java library、BlazeDS与Tomcat、Jboss、Websphere{security集成的支持包?/p>

    sampledbQhsqldb的启动脚本及样例数据?/p>

    tomcatQTomcat ?/p>

    blazeds.warQ最化的BlazeDS 文gQ可以作为空白项目来建立BlazeDS 应用E序?/p>

    sample.warQBlazeDS的demo例子Q所谓的testdriveQ?/p>

    ds-console.war QBlazeDS的部|管理程序?/p>

    2、徏立Java Web Project

    File->New->Web Project 建立Java helloworld目

    blazeds1 在helloworld/src下,新徏com.yeeach.HelloWorldServicec,内容如下Q?/p>

    package com.yeeach;

    public class HelloWorldService {
    public String hello(String var1) {
    return “hello ” + var1;
    }
    public String world(String var1) {
    return “world ” + var1;
    }
    }

    3、徏立helloworld的BlazeDS开发环?/strong>

    3.1、拷贝blazeds.war下的WEB-INF到helloworld的目录下Q覆盖原有的WEB-INF

    3.2、在helloworld下徏立flex-src目录Q与src同Q,用于存放flex的相关代?/p>

    blazeds2 helloworld/srcQ用于存N目的java代码

    helloworld/flex-srcQ用于存N目flex的相关代?/p>

    helloworld/WebRoot/WEB-INF/flexQ存放flex的相关配|文?/p>

    3.3、设|Flex Project Nature

    blazeds3

    blazeds4

    blazeds5

    3.4、在helloworld/flex-src下,新徏MXML Application Qhelloworld.mxml  Q内容如下:

    <?xml version=”1.0″ encoding=”utf-8″?>
    <mx:Application xmlns:mx=”
    http://www.adobe.com/2006/mxml”
    layout=”vertical”>
    <mx:RemoteObject destination=”com.yeeach.HelloWorldService”
    id=”helloWorldService”>
    <mx:method name=”hello”
    result=”sayHelloResult(event)”/>
    <mx:method name=”world”
    result=”sayWorldResult(event)”/>
    </mx:RemoteObject>
    <mx:HBox>
    <mx:Label text=”输入Q?#8221;/>
    <mx:TextInput id=”inputStr”/>
    <mx:Button label=”say hello”
    click=”sayHello(event);”/>
    <mx:Button label=”say world”
    click=”sayWorld(event);”/>
    </mx:HBox>
    <mx:HBox>
    <mx:Label text=”l果Q?#8221;/>
    <mx:TextArea id=”result”/>
    </mx:HBox>

    <mx:Script>

    <![CDATA[
    import mx.rpc.events.FaultEvent;
    import mx.controls.Alert;
    import mx.rpc.events.ResultEvent;

    function sayHello(event:Event):void
    {
    var inputVar:String=inputStr.text;
    helloWorldService.hello(inputVar);

    }

    function sayWorld(event:Event):void
    {
    var inputVar:String=inputStr.text;
    helloWorldService.world(inputVar);

    }

    private function sayHelloResult(event:ResultEvent):void
    {
    result.text=event.result.toString();
    Alert.show(event.result.toString(), "q回l果");
    }

    private function sayWorldResult(event:ResultEvent):void
    {
    result.text=event.result.toString();
    Alert.show(event.result.toString(), "q回l果");
    }
    ]]>
    </mx:Script>
    </mx:Application>

    3.5、修改remoting-config.xmlQ增加对destination的说?/p>

    <destination id=”com.yeeach.HelloWorldService”>
    <properties>
    <source>com.yeeach.HelloWorldService</source>
    </properties>
    </destination>

    3.6、设|Flex Build Path{相兛_?/p>

    1)右键->Properties,讄Flex Build Path属性,Main source folder修改为flex-srcQ然后点?#8220;OK”

    2)右键->Properties,讄Flex Applications属性,dflex-src下的其他ApplicationQ然后点?#8220;OK”

    如果需要添加flex-src子目录下的其他ApplicationQ例如helloworld/flex-src/com/yeeach/helloworld1.mxmlQ,目前从UI界面g无法正确dQ可以直接修?actionScriptProperties,?lt;applications></applications>中间增加相应的Application

    <applications>
    <application path=”helloworld.mxml”/>

    <application path=”com/yeeach.com/helloworld1.mxml”/>
    </applications>

    3)右键->Properties,讄Flex Compiler属性,Flex SDK version 修改?#8220;Use default”?#8220;Use a specific SDK”Q指向正的Flex SDKQ确?#8220;Additional compiler arguments”配置参数正确Q然后点?#8220;OK”

    blazeds6 4)右键->Properties,讄Flex Server属性,配置为正的参数Q然后点?#8220;OK”

    blazeds7

    3.7、部|helloworld 应用到Tomcat

    通过http://127.0.0.1:8080/helloworld/helloworld.swf来访问我们的hello world

    3.8、分析helloworld.mxml

    <?xml version=”1.0″ encoding=”utf-8″?>
    <mx:Application xmlns:mx=”
    http://www.adobe.com/2006/mxml”
    layout=”vertical”>
    <mx:RemoteObject destination=”com.yeeach.HelloWorldService”
    id=”helloWorldService”>

    //此处的destination=”com.yeeach.HelloWorldService”与remoting-config.xml中的id=”com.yeeach.HelloWorldService”完全匚w

    //id=”helloWorldService”用来在actionscript中标?/em>destination=”com.yeeach.HelloWorldService”Q后面的helloWorldService.hello(inputVar){都使用此id;

    <mx:method name=”hello”
    result=”sayHelloResult(event)”/>

    //mx:method 声明javaccom.yeeah.com.HelloWorldService中的helloҎ及响应结果回调函数sayHelloResult
    <mx:method name=”world”
    result=”sayWorldResult(event)”/>
    </mx:RemoteObject>
    <mx:HBox>
    <mx:Label text=”输入Q?#8221;/>
    <mx:TextInput id=”inputStr”/>
    <mx:Button label=”say hello”
    click=”sayHello(event);”/>
    <mx:Button label=”say world”
    click=”sayWorld(event);”/>
    </mx:HBox>
    <mx:HBox>
    <mx:Label text=”l果Q?#8221;/>
    <mx:TextArea id=”result”/>
    </mx:HBox>

    <mx:Script>

    <![CDATA[
    import mx.rpc.events.FaultEvent;
    import mx.controls.Alert;
    import mx.rpc.events.ResultEvent;

    function sayHello(event:Event):void
    {
    var inputVar:String=inputStr.text;
    helloWorldService.hello(inputVar);

    }

    function sayWorld(event:Event):void
    {
    var inputVar:String=inputStr.text;
    helloWorldService.world(inputVar);

    }

    private function sayHelloResult(event:ResultEvent):void
    {
    result.text=event.result.toString();
    Alert.show(event.result.toString(), "q回l果");
    }

    private function sayWorldResult(event:ResultEvent):void
    {
    result.text=event.result.toString();
    Alert.show(event.result.toString(), "q回l果");
    }
    ]]>
    </mx:Script>
    </mx:Application>

    代码文gQ?a >helloworld.rar



    @joe 2010-01-13 17:22 发表评论
    ]]>
    վ֩ģ壺 | ԭ| ǰ| ɽ| ʤ| ƽ| | ¤| ˫Ѽɽ| е| | Դ| üɽ| | | ɽ| | ˳| Ű| ľ| | ¤| | | | | | | ŷ| | | | ǰ| Ƽ| | Ϫ| | ɽ| | ӳ| |