基于ActionScript 3 的Flex Air 教程 入门(一)

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

 

 

 

 

 

 

 

FLEX3.0 RIA 基础教程
                                         -------- 基于ActionScript 3实现

 

 

 

 

 

 

 

 

 

 

 

前记:

Abodb AIR 1.0 终于出来了。
继最初AIR SDK alpha版本之后12个月,Adobe发布了Flex3.0AIRAdobe集成运行时)1.0版本。Flex利用Adobe Flash player提供了一个构建交互式富因特网应用程序(RIAs)的框架。

AIR依次允许开发人员使用FlexHTML/CSS/JavaScript组合来构建桌面应用程序。当前AIR支持WindowsXP Windows VistaMac OS X。支持Linux的目标版本是AIR 1.1Adobe同样发布了最新的Flex Builder 3 IDE,标准版售价为249美元,专业版售价为699美元。

 谁在用AIR

eBay http://desktop.ebay.com

  eBay桌面是构建于Adobe AIR上的一个应用程序,程序创建了与eBay客户的持久连接。eBay桌面实时地直接将产品供货通知和拍卖更新发布给买主,这样用户不需要打开浏览器进入易趣网站就可以获取最新信息。

  纳斯达克股票市场公司(https://data.nasdaq.com/mr.aspx

  NASDAQ Market Replay使用Adobe FlexAdobe AIR在桌面上发布一个RIA,让金融专业人士能够重放任何时间点市场活动的详情。

  纽约时报公司(http://shifd.com

  纽约时报公司正在开始ShifD,一个新的RIA,允许使用者在计算机和移动设备之间切换内容。ShifD工作在Web网站和移动设备之上以及两者之间,通过一个可下载的AIR应用程序提供给人们一种欣赏移动媒体的方式。

 

 

 

 

 

 

 

 

Flex基础

开发Flex其实是比较简单的,如果熟悉xmlhtmlc 或者java,以前从事过VBdelphi或者RCP 的话开发起来比较得心应手。

 

FlexMXMLActionScript来编写。MXML最终编译成SWF文件。MXML就是在XML上写HTML MXMLHTML更结构化,提供了跟丰富的标签。

ActionScriptJavaScript都是客户端语言。我对ActionScript上手没有一点困难。

ActionScirpt完全面向对象。开发的语法和Java差不多。

 

java定义一个类的方法

Java 方法
public
void checkUser(String username,String password){

       String myStr = “123456”;

}

 

ActionScript定义一个类的方法

public function checkUser(username:String = "", password: String) :void{

    var ran:Number;

    var myStr:String = "123465";

}

 

下面用一个登录的例子来做为Flex的入门
1.
在菜单中File ->  New -> MXML Application



<?xml version="1.0" encoding="utf-8"?><!-- XML编程必须的指定的 -->

 

<!-- WindowedApplication定义了应用程序容器 -->

<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" width="509"

     creationComplete="initApp()" height="422" themeColor="#54BAEA" backgroundColor="#ffffff">

     <!--Flex中没有页面的概念,没有页面直接的切换,只有状态states的转换.-->

    <mx:states>

       <mx:State name="index" id="indexID">

           <mx:RemoveChild target="{titlewindow1}"/>

           <mx:AddChild position="lastChild">

              <mx:Label text="Welcome to www.plogcn.com 中国玩客网" width="411" height="69" fontSize="20" color="#007DCD"/>

           </mx:AddChild>

           <mx:AddChild position="lastChild">

              <mx:Image width="90" height="168"  id="image1">

                  <mx:source>file:///C|/Documents and Settings/jx.YGGROUP/My Documents/My Pictures/398583.gif</mx:source>

              </mx:Image>

           </mx:AddChild>

           <mx:SetStyle name="borderColor" value="#060606"/>

       </mx:State>

    </mx:states>

    <mx:TitleWindow width="402" height="312" layout="absolute" title="Login Form" id="titlewindow1">

       <mx:Button x="131" y="167" label="Login" click="validateUser()" tabIndex="4"/>

       <mx:Label x="64.5" y="76" text="Username:"  fontWeight="bold"/>

       <mx:Label x="67.5" y="106" text="Password:" fontWeight="bold"/>

       <mx:TextInput x="139.5" y="74" id="username" tabIndex="1"/>

       <mx:TextInput x="139.5" y="104" displayAsPassword="true" id="password" tabIndex="2"/>

       <mx:Button x="206" y="167" label="Cancel" tabIndex="5"/>

       <mx:Text x="33" y="20" width="316" height="46" fontFamily="Courier New" fontSize="17" color="#4189FF" id="showText"/>

       <mx:Label x="76.5" y="132" text="校验码:" width="55" fontWeight="bold" fontSize="12"/>

       <mx:TextInput x="139.5" y="132" width="79" id="txtCheckCode" tabIndex="3"/>

       <mx:Label x="226" y="134" width="73.5" id="lblCheckCode" height="20" fontSize="13" fontWeight="bold"/>

    </mx:TitleWindow>

   

    <!-- mx:Script包含ActionScript的代码 ,代码应该写在<![CDATA[ ]]> 里面-->

    <mx:Script>

       <![CDATA[

       //如果是定义类的方式,需要用import方式引入进来.不能用source= "/script/Greeter.as"这种方式

       import script.Greeter;

       public  function validateUser():void{

           var result:String = "1";

           result = Greeter.sayHello(username.text,password.text,txtCheckCode.text,lblCheckCode.text);

           if (result == "success"){

              currentState = "index";

           }else{

              showText.text = result;

           }

       }

       private function initApp():void{

           lblCheckCode.text = Greeter.GenerateCheckCode(); //Greeter 脚本文件中的GenerateCheckCode方法

       }

       ]]>

    </mx:Script>

</mx:WindowedApplication>

Greeter.as文件

package script{

    import mx.controls.Alert;

    import mx.states.IOverride;

   

    public class Greeter{

       public static var validNames:Array = ["sonic", "frant" ,"linux"];

      

       public static function sayHello(userName:String = "",psw:String = "",txtCode:String = "",checkCode:String = ""):String{

           var greeting:String;

           if(userName =="" && psw == ""){

              Alert.OK;

              //greeting  = "Hello. please type your user anme , and then press Enter key.";

              Alert.show("请输入用户名和密码");

           }else if(validation(userName,psw,txtCode,checkCode)){

              greeting = "success";

              //greeting = "Hello " + userName + " Welcome !"

              //Alert.show("登录成功");

           }else{

              greeting = "Sorry," + userName + ".You are not on the list. ";

           }

           return greeting;

       }

 

       public static function validation(inputName:String,psw:String,txtCode:String,checkCode:String):Boolean{

           if (validNames.indexOf(inputName) > -1 && psw == "123456" && txtCode.toLowerCase() == checkCode.toLowerCase()){

              return true;

           }else{

              return false;

           }

       }

 

       /**

        * @return code

        * 生成四位数的随机数.

        */

       public static function GenerateCheckCode():String{

           //init method

           var ran:Number;

           var number:Number;

           var code:String;

           var checkCode:String="";

          

           //生成四位数的随机数

           for(var i:int=0;i<4;i++){

              ran = Math.random();

              number = Math.round(ran*10000);

              if(number % 2 == 0)

                  // "0"ASCII码是48

                  code = String.fromCharCode(48 + (number % 10))

              else //生成一个字母 AASCII码是65

                  code = String.fromCharCode(65 + (number % 26));

              checkCode += code;

           }

           return checkCode;

       }

    }

}

 

Flex的图形处理

  1. 拖一个Panel
  2. 里面放柱图图形标签<mx:ColumnChart ../>
  3. <mx:Script>里面定义一个数据绑定,要用关键字  [Bindable],然后定义个financeArrayCollection
  4. <mx:ColumnChart ../>在定义属性dataProvider="{finance}"

 

具体可运行例子参照下面代码.

<?xml version="1.0" encoding="utf-8"?>

<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal" height="600" width="700">

    <mx:Panel width="605" height="511" layout="absolute" title="Column chart . Design by www.plogcn.com">

       <!--柱图-->

       <mx:ColumnChart x="104" y="10" id="myColumnChart" dataProvider="{finance}" width="424">

           <!-- 定义横坐标,绑定到 ArrayCollection {finance} 数据集中 -->

           <mx:horizontalAxis>

              <mx:CategoryAxis dataProvider="{finance}" categoryField="Month" title="月份" />

           </mx:horizontalAxis>

           <!--2个数据 ,所以就是2<mx:ColumnSeries> x轴为月份,y轴为收入或支出-->

           <mx:series>

              <mx:ColumnSeries  xField="Month" yField="In" displayName="收入"/>

              <mx:ColumnSeries  xField="Month" yField="Out" displayName="支出"/>

           </mx:series>

       </mx:ColumnChart>

       <!-- 绑定柱状图中的数据ID{<mx:ColumnSeries} -->

       <mx:Legend id="myLegend" dataProvider="{myColumnChart}" x="11" y="10"/>

    </mx:Panel>

    <mx:Script>

       <![CDATA[

           import mx.collections.ArrayCollection;

           [Bindable]

           public var finance:ArrayCollection = new ArrayCollection([

              {Month:"1",In:2300,Out:880},

              {Month:"2",In:2200,Out:550},

              {Month:"3",In:2420,Out:500},

              {Month:"4",In:2333,Out:6500},

              {Month:"5",In:2880,Out:700},

              {Month:"6",In:1000,Out:1200},

              {Month:"7",In:800,Out:100},

              {Month:"8",In:700,Out:500},

              {Month:"9",In:1500,Out:2500},

              {Month:"10",In:4000,Out:1300},

              {Month:"11",In:3000,Out:1200},

              {Month:"12",In:8000,Out:1100},

           ]);

       ]]>

    </mx:Script>

</mx:WindowedApplication>

 

 

运行结果:
没有注册的Flex Builder 生成都图片有水印

Flex数据处理

 

Flex绑定最简单的方式是用 ”{ …. }”, 绑定的类型要一致.

使用”[Bindable]”可指明变量或属性可绑定.

例如

[Bindable]

Private  var myStr:String = “123456789”;

绑定的运行效率要比代码实现的效率高得多.

 

<mx:Model > 组件是Flex3.0的数据模型组件,类似XML数据定义

<mx:Model>

       <user> 根节点-必须要有

           <name>Sonic</name>

           <sex>male</sex>

<old>27</old>

       </user>

</mx:Model>

 

MX:OBJECT的方式

<mx:Object name=”sonic” sex=”male” old=”27” />

<mx:Object name=”Jacky” sex=”male” old=”20” />

 

还可以使用<mx:xml>方式绑定,mx:Model的方式差不多。

效果如:

数据验证组件

 

       Flex中提供了一些常用的组件进行数据验证.有些组件是以美国的规定定制的.如邮编

 

电话号码验证:  <mx:PhoneNumberValidator source="" property="" id="" />

日期验证:   <mx:DateValidator source="" property="" id="" />

E-mail验证: <mx:EmailValidator id="" source="" source="" />

还有数字验证,字符串,货币等

其中属性Source 是指要验证组件的id要用{},property是要数据组件的属性

<?xml version="1.0" encoding="utf-8"?>

<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" color="#5DDEFA">

    <mx:Panel x="10" y="10" width="431" height="382" layout="absolute">

       <mx:DataGrid x="10" y="10" dataProvider="{XMLBindingID.user}" width="358" fontWeight="bold" color="#000000">

           <mx:columns>

              <mx:DataGridColumn draggable="true" headerText="UserName" dataField="name"/>

              <mx:DataGridColumn draggable="true" headerText="Sex" dataField="sex"/>

              <mx:DataGridColumn draggable="true" headerText="Department" dataField="department" />

           </mx:columns>

       </mx:DataGrid>

       <mx:TextInput id="email"  x="72" y="169"/>

       <mx:TextInput id="date"  x="72" y="199"/>

       <mx:TextInput id="phone"  x="72" y="229"/>

    </mx:Panel>

    <mx:PhoneNumberValidator source="{phone}" property="text" id="vphoto"  />

    <mx:DateValidator source="{date}" property="text" id="vdate" />

    <mx:EmailValidator source="{email}" property="text" id="vemail" invalidCharError="非法字符" invalidDomainError="非法域"  missingAtSignError="没有@,请补上"/>

</mx:WindowedApplication>

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值