Flex入门教程第二部分――创建一个简单的计算器
作者:Robert Crooks
翻译及编辑:冰树
转载请务必注明来自:冰树之家(http://blog.csdn.net/zzr173/)
一、在这一部分内容中,你可以学到:
1、如何使用Application (应用程序)标签
2、如何使用Panel (面板)容器
3、如何使用Label (标签)控件
4、如何使用Button (按钮)控件
5、如何使用Grid (格子容器)控件
6、如何用ActionScript控制类编写MXML文件
二、要求:
完成本教程必须具备的软件和文件:Macriomedia Flex
Dreamweaver MX 2004 或其他文本编辑器(例如记事本),用来编辑XML和ActionScript代码
准备知识:
阅读Flex简介
会浏览一个Flex应用程序
已经学习过了第一个实例教程
三、开始创建一个计算器:
计算器包括了两个部分,一个是在MXML中建立用户界面,一个是在ActionScript控制类中编写的控制器。
(一)创建一个应用程序:
用flex1.5创建一个MXML Application应用程序。
保存为calculator.mxml
向导将为你生成:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml">
</mx:Application>
添加一个panel控件,程序是:
<mx:Panel title="计算器">
</mx:Panel>
添加一个标签控件
<mx:Label id="计算结果" width="150" textAlign="right" />
添加一个停放按钮的5行4列的Grid控件在Panel控件上
<mx:Grid>
</mx:Grid>
在编辑器中对Grid进行布局。
将第一行第一列的GridItem中colSpan属性设为2,并删除后面一个GridItem
将第五行第三列的GridItem中colSpan属性设为2,并删除后面一个GridItem
在18个GridItem中添加按钮,做成一个计算器:
具体程序如下:
第一行:
width="70"
label="Clear" click="calcController.clearAll()"width="30"
label="C/E"
click="calcController.clearEntry()"width="30"
label="+"
click="calcController.setOperation('add')"
第二行:
width="30"
label="1"
click="calcController.addNumber('1')"width="30"
label="2"
click="calcController.addNumber('2')"width="30"
label="3"
click="calcController.addNumber('3')"width="30"
label="-"
click="calcController.setOperation('subtract')"
第三行:
width="30"
label="4"
click="calcController.addNumber('4')"width="30"
label="5"
click="calcController.addNumber('5')"width="30"
label="6"
click="calcController.addNumber('6')"width="30"
label="*"
click="calcController.setOperation('multiply')"
第四行:
width="30"
label="7"
click="calcController.addNumber('7')"width="30"
label="8"
click="calcController.addNumber('8')"width="30"
label="9"
click="calcController.addNumber('9')"width="30"
label="/"
click="calcController.setOperation('divide')"
第五行:
width="30"
label="0"
click="calcController.addNumber('0')"width="30"
label="."
click="calcController.addNumber('.')"width="70"
label="="
click="calcController.doOperation()"
嘿嘿,写了这么多,记得保存哦。
(二) 创建一个ActionScript class,建立一个ActionScript文件。
保存为CalculatorController.as。
创建一个CalculatorController类,并添加相应的构造函数。
class CalculatorController
{
public function CalculatorController(){}
}
添加我们需要的属性
public var calcView:Object;
// 添加两个变量用于操作的两数,字符串形式
private var reg1:String="";
private var reg2:String="";
// 返回结果
private var result:Number;
// 当前使用的变量名
private var currentRegister:String="reg1";
// 下一操作数
private var operation:String="none";
// 两操作数,数字形式
private var r1:Number;
private var r2:Number;
添加两数的操作方法:
方法doOperation用于加、减、乘、除的操作接口。
首先是将两个字符串转化成数字类型:
r1=Number(reg1);
r2=Number(reg2);
使用选择结构确定是加、减、乘、除哪个操作:
switch (expression)
{
case 值:
[ActionScript 语句]
break; // 对应的值执行相应操作后返回
[多个case]
default: // 不在值列表中的,在这里处理
[默认操作actions]
}
完整函数是:
public function doOperation():Void
{
// cast the register values to numbers
r1=Number(reg1);
r2=Number(reg2);
switch (operation)
{
case "add":
result=r1+r2;
resetAfterOp();
break;
case "subtract":
result=r1-r2;
resetAfterOp();
break;
case "multiply":
result=r1*r2;
resetAfterOp();
break;
case "divide":
result=r1/r2;
resetAfterOp();
break;
default:
// do nothing
}
}
下面一步步完成加、减、乘、除的操作:
加法:
使用到的是if结构:
if (条件语句)
{
[ActionScript 语句]
}
[else if (条件语句) // 0 or 或更多
{
[ActionScript 语句]
}
else // 0 or 或一个
{
[ActionScript语句]
}]
比较操作如下:
Operator
|
Meaning
|
==
|
等于
|
<
|
小于
|
>
|
大于
|
<=
|
小于等于
|
>=
|
大于等于
|
!
|
逻辑非
|
添加得到如下函数:
public function addNumber(n:String):Void
{
if (operation=="none" && currentRegister=="reg2")
{
reg1="";
setCurrentRegister();
}
this[currentRegister]+=n;
setDisplay(currentRegister);
}
再添加清零等其他函数(不懂看本人加的备注):
//刷新当前结果
public function clearEntry():Void
{
this[currentRegister]="";
setDisplay(currentRegister);
}
// 清除当前变量及结果
public function clearAll():Void
{
reg1="";
reg2="";
setCurrentRegister();
setOperation("none");
setDisplay(currentRegister);
}
// 设置当前操作的值
public function setOperation(operation:String):Void
{
this.operation=operation;
setCurrentRegister();
}
// 显示结果
private function setDisplay(register:String):Void
{
calcView.calcDisplay.text = this[register];
}
// 设置当前变量
private function setCurrentRegister():Void
{
if (reg1=="")
{
currentRegister="reg1";
}
else
{
currentRegister="reg2";
}
}
// 重置变量
private function resetAfterOp():Void
{
reg1=String(result);
reg2="";
setDisplay("reg1");
setOperation("none");
}
(三) 最后一步就是将两文件联系起来了。
你可以通过应用程序标签进行关联。但在这里我们采用的是通过设置xmlns
属性,设置成”*”,它的意思是加载所有检测到的类。但同时你还是要加上对
calcController的引用。具体是:
1
、添加xmlns属性:
<mx:Application xmlns:mx=http://www.macromedia.com/2003/mxml xmlns="*">
2
、在应用程序第一个标签内添加:
<CalculatorController id="calcController" calcView="{this}"/>
四、完整的程序:
calculator.mxml文件:
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml" xmlns="*">
<!-- calculator controller -->
<CalculatorController id="calcController" calcView="{this}"/>
<!-- calculator view -->
<mx:Panel title="Calculator">
<!-- calculator display -->
<mx:Label id="calcDisplay" width="150" textAlign="right"/>
<!-- calculator controls -->
<mx:Grid>
<mx:GridRow>
<mx:GridItem colSpan="2">
<mx:Button width="70" label="Clear" click="calcController.clearAll()"/>
</mx:GridItem>
<mx:GridItem>
<mx:Button width="30" label="C/E" click="calcController.clearEntry()"/>
</mx:GridItem>
<mx:GridItem>
<mx:Button width="30" label="+" click="calcController.setOperation('add')"/>
</mx:GridItem>
</mx:GridRow>
<mx:GridRow>
<mx:GridItem>
<mx:Button width="30" label="1" click="calcController.addNumber('1')"/>
</mx:GridItem>
<mx:GridItem>
<mx:Button width="30" label="2" click="calcController.addNumber('2')"/>
</mx:GridItem>
<mx:GridItem>
<mx:Button width="30" label="3" click="calcController.addNumber('3')"/>
</mx:GridItem>
<mx:GridItem>
<mx:Button width="30" label="-" click="calcController.setOperation('subtract')"/>
</mx:GridItem>
</mx:GridRow>
<mx:GridRow>
<mx:GridItem>
<mx:Button width="30" label="4" click="calcController.addNumber('4')"/>
</mx:GridItem>
<mx:GridItem>
<mx:Button width="30" label="5" click="calcController.addNumber('5')"/>
</mx:GridItem>
<mx:GridItem>
<mx:Button width="30" label="6" click="calcController.addNumber('6')"/>
</mx:GridItem>
<mx:GridItem>
<mx:Button width="30" label="*" click="calcController.setOperation('multiply')"/>
</mx:GridItem>
</mx:GridRow>
<mx:GridRow>
<mx:GridItem>
<mx:Button width="30" label="7" click="calcController.addNumber('7')"/>
</mx:GridItem>
<mx:GridItem>
<mx:Button width="30" label="8" click="calcController.addNumber('8')"/>
</mx:GridItem>
<mx:GridItem>
<mx:Button width="30" label="9" click="calcController.addNumber('9')"/>
</mx:GridItem>
<mx:GridItem>
<mx:Button width="30" label="/" click="calcController.setOperation('divide')"/>
</mx:GridItem>
</mx:GridRow>
<mx:GridRow>
<mx:GridItem>
<mx:Button width="30" label="0" click="calcController.addNumber('0')"/>
</mx:GridItem>
<mx:GridItem >
<mx:Button width="30" label="." click="calcController.addNumber('.')"/>
</mx:GridItem>
<mx:GridItem colSpan="2">
<mx:Button width="70" label="=" click="calcController.doOperation()"/>
</mx:GridItem>
</mx:GridRow>
</mx:Grid>
</mx:Panel>
</mx:Application>
CalculatorController.as文件
class CalculatorController
{
public var calcView:Object;
private var reg1:String="";
private var reg2:String="";
private var result:Number;
private var currentRegister:String="reg1";
private var operation:String="none";
private var r1:Number;
private var r2:Number;
public function CalculatorController()
{}
public function doOperation():Void
{
r1=Number(reg1);
r2=Number(reg2);
switch (operation)
{
case "add":
result=r1+r2;
resetAfterOp();
break;
case "subtract":
result=r1-r2;
resetAfterOp();
break;
case "multiply":
result=r1*r2;
resetAfterOp();
break;
case "divide":
result=r1/r2;
resetAfterOp();
break;
default:
// do nothing
}
}
public function addNumber(n:String):Void
{
if (operation=="none" && currentRegister=="reg2")
{
reg1="";
setCurrentRegister();
}
this[currentRegister]+=n;
</spa
分享到:
相关推荐
这个部分教程聚焦于Flex的基础知识和关键概念,通过2、6、13和17章的内容帮助学习者深入理解Flex的应用场景和开发流程。 在“chapter2.pdf”中,你可能会学到Flex的基础架构,包括MXML(Markup for XML)和...
### 自创Flex入门教程 #### 一、技术背景与范围 本教程主要涉及以下几个方面的内容: - **Java**:作为后端开发的主要语言之一,Java提供了丰富的类库和框架支持,便于开发各种复杂的应用程序。 - **JavaServlet*...
flex 简易计算器flex 简易计算器flex 简易计算器flex 简易计算器
例如,下面的代码创建了一个简单的按钮组件: ```xml 点击我" click="handleClick(event)"/> ``` 这里的`id`属性为按钮分配了一个唯一的标识符,`label`属性设置了按钮的文本,而`click`属性绑定了一个点击事件...
【Flex + LCDS + Java 利用Eclipse Plugin开发Flex入门教程】 Flex是一种基于Adobe Flash技术的开源框架,用于构建富互联网应用程序(RIA)。它允许开发者创建交互式、响应式的用户界面,通常与后端数据服务配合...
Flex入门教程——Web和RIA工程实例是一份专为初学者设计的教程,旨在帮助学习者掌握Adobe Flex这一强大的富互联网应用程序(RIA)开发框架。Flex是基于ActionScript和MXML,用于构建交互式、高性能的Web应用的工具,...
"FlexLoginDemo.rar"提供了实际的登录验证示例,这是一个常见的Flex应用场景。在这个示例中,你将看到如何创建登录表单,处理用户输入,以及如何通过与后台服务的通信验证用户名和密码。这将涉及到Flex中的...
### Flex教程大全:Flex快速入门 #### 一、Flex简介 Flex是由Adobe公司推出的一款用于构建Web应用程序的技术框架。它允许开发者使用MXML(一种基于XML的语言)和ActionScript(一种面向对象的脚本语言)来进行高效...
Flex入门教程汇编.pdf
总的来说,“flex写的计算器”是一个展示Flex技术和ActionScript 3.0能力的实例,它结合了MXML和ActionScript来实现一个直观易用的图形界面计算器。开发者通过理解组件模型、事件处理机制以及面向对象的编程概念,...
本教程旨在为初学者提供一个全面的Flex入门指导,帮助你逐步掌握Flex的基本概念、语法以及开发流程。 1. **Flex概述**:Flex是一个开发工具和框架的集合,它允许开发者创建具有丰富用户界面的Web应用程序。Flex SDK...
初学者的天堂,flex基础教程 flex actionScipt脚本的讲解
1. **Flex**:Adobe Flex是一个用于构建和部署富互联网应用程序(RIA)的软件框架,能够创建跨平台的桌面和移动设备应用程序。Flex使用MXML和ActionScript编程语言,能够与多种后端技术无缝集成。 2. **LCDS ...
总之,"Flex入门实例教程"是一个全面的学习资源,无论你是初学者还是有一定基础的开发者,都能从中受益。通过阅读并实践其中的示例,你将能够掌握Flex的基本用法,进一步提升在RIA开发领域的技能。
在Hello World章节中,读者会学习如何创建第一个Flex程序,这是所有编程学习的典型起点,旨在熟悉开发环境和基本的代码结构。紧接着,教程深入介绍了Flex中的可视化页面组件,如按钮、文本框等,这些是构建用户界面...
4. Flex SDK:Flex SDK是一个免费的开源工具集,包含了编译器、命令行工具和运行时库,用于创建Flex应用程序。开发者可以使用SDK中的工具进行编译和打包,无需购买任何额外的软件。 5. Flex Builder:Flex Builder...
《构建全栈式Flex、BlazeDS和Spring集成解决方案》这部分内容可能更深入地讲解了如何创建一个完整的应用程序,从Flex用户界面设计到后端业务逻辑的实现。全栈式开发意味着你将学习到如何处理数据绑定、事件处理、UI...
《使用Flex和Bison构建科学计算器》 在计算机科学领域,构建计算器是一项常见的学习任务,而使用Flex和Bison这两个工具则能让我们深入理解...通过不断地调试和完善,我们可以创建一个功能强大且用户友好的科学计算器。
在IT领域,构建一个网页可编程计算器是一项常见的实践项目,它能够帮助开发者提升对Web开发和解析器技术的理解。本项目以“基于Flex&Bison的网页可编程计算器”为主题,通过集成Flex(词法分析器生成器)和Bison...