Flex 3开发实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.6.2 编写实例

具体操作步骤如下:

(1)执行“File”→“New”→“ActionScript Class”菜单命令,新建一个ActionScript类,如图1-24所示。

图1-24 新建ActionScript类

(2)设置包名为“com.flex.demo”,名称为“Circle”,如图1-25所示,完成后单击【Finish】按钮。

图1-25 设置ActionScript包名和类名

(3)在Circle.as文件的输入窗口中编写Circle类文件,内容如下:

        package com.flex.demo
        {
            public class Circle
            {
                //定义常量派
                private const PAI:Number = 3.14;
                //定义属性:半径
                private var radius:Number ;
                //构造方法
                public function Circle(radius:Number)
                {
                    this.radius = radius ;
                }
                //获得圆的面积方法
                public function area():Number
                {
                    return this.PAI*this.radius*this.radius;
                }
            }
        }

(4)完成后单击工具栏的保存按钮 保存文件,关于ActionScript语法规则,将在第2章进行详细介绍,这里不做过多讲解。

(5)双击“Flex Navigator”窗口下的“CalculateCircleArea.mxml”文件,打开该主程序运行文件,如图1-26所示。

图1-26 主程序文件内容

(6)单击“CalculateCircleArea.mxml”文件窗口中的【Design】按钮,进入该文件的设计模式,主界面左下角会出现“Components”窗口,如图1-27所示,拖曳一个“TextInput”标签到Design区域。

图1-27 添加TextInput标签

(7)选择该标签,在“Flex Properties”属性窗口中,设置TextInput标签的ID属性值为“radius”,如图1-28所示。

图1-28 设置TextInput标签的id属性

(8)同理,添加TextInput标签,ID值为“area”用来显示面积值,设置其“Editable”属性值为“false”,表示不能编辑,由程序计算得出。添加一个Button标签,“Label”值设置为“计算圆面积”,该按钮用于调用实现方法,并将计算结果添入到“area”栏中。再添加两个Label标签,作为半径和面积的中文说明。

最终效果如图1-29所示。

图1-29 添加Label标签的主程序界面

设计完成后单击【Source】按钮,查看CalculateCircleArea.mxml文件源码,如下所示:

        <?xml version="1.0" encoding="utf-8"?>
        <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
        fontSize="12">
        <mx:Label x="37" y="59" text="请输入半径值:" width="97" height="18"/>
            <mx:TextInput x="142" y="57" id="radius"/>
            <mx:Label x="37" y="110" text="圆的面积是:" width="86"/>
            <mx:TextInput x="142" y="108" enabled="true" id="area" editable="false"/>
            <mx:Button x="310" y="59" label="计算圆的面积" />
        </mx:Application>

接下来,需要将之前建立的Circle.as类加到应用中,计算面积填入TextInput文本框中,并在控制台输出。在<mx:Application>标签中添加如下代码:

        <mx:Script>
            <![CDATA[
            import mx.controls.Alert;
            import com.flex.demo.Circle;
            //定义CalArea计算面积填入TextInput文本框并在控制台输出
            internal function CalArea():void
            {
                var r:Number = (Number)(radius.text);
                                            //将输入的半径转化为Number类型
                if(r.toString() == "NaN")//如果输入的不是数字类型则给出错误提示信息
                {
                        Alert.show("请输入数字!","错误提示");
                }
                else
                {
                                            //如果输入正确则计算圆的面积返回显示
                        var c:Circle = new Circle(r);
                        area.text = c.area().toString() ;
                        trace(area.text);   //在控制台输出面积值
                }
            }
            ]]>
        </mx:Script>

<mx:Script>标签表示其中需要编写as代码内容,犹如在JSP文件中编写Java代码时需要使用<%%>一样。“<![CDATA”和“]]>”语法是为了告诉XML包含在其中的任何东西都不需要做XML解析。在Script标签中添加CDATA块并不是必需的,但是如果不使用CDATA块,在<mx:Script>标签中使用像“<”的符号,XML解析器会认为你正在写一个新的标签。

在以上程序中,首先,需要使用import语句引入Circle类;之后,创建Circle类实例,将半径值作为Circle类构造方法参数传入到Circle对象中,然后将计算得出的面积值填入“area”栏中显示,同时在控制台打印输出面积值。trace语句用来输出信息到控制台,前提是使用的Flash Player必须是Debug版本。最新的Flash Player Debug版本可以到Adobe官方网站下载:http://www.adobe.com/support/flashplayer/downloads.html。

最后,需要在Button的click事件中调用CalArea方法,如下所示:

        <mx:Button x="310" y="59" label="计算圆的面积" click="CalArea()" />