ActionScript编程实战项目计算器程序.docx
《ActionScript编程实战项目计算器程序.docx》由会员分享,可在线阅读,更多相关《ActionScript编程实战项目计算器程序.docx(14页珍藏版)》请在冰豆网上搜索。
ActionScript编程实战项目计算器程序
ActionScript编程实战项目:
计算器程序
在ActionScript3.0中,最常用的运算符就是四则运算符以及求余运算符。
使用ActionScript3.0中的运算符,可以方便地制作一个计算器程序,通过自定义的影片剪辑获取用户输入的信息,然后计算结果,如图2-1所示。
图2-1计算器程序制作过程:
(1)在图像处理软件中设计计算器的用户界面,并导入计算器的背景图像,将其转换为影片剪辑元件。
在【元件属性】对话框中,设置元件【为ActionScript导出】,并设置【类】为calcbg,如图2-2所示。
图2-2导入背景并设置类
(2)用同样的方法,导入影片背景图像、后退、清零按钮和数字按钮,并将这些图像转换为影片剪辑元件,如图2-3所示。
图2-3导入背景图像和按钮
背景图像的类名为bgmap,后退按钮的类名为bacbtn,清零按钮的类名为clsbtn,数字按钮的类名为calcbtn。
(3)执行【窗口】|【组件】命令,在弹出的【组件】面板中,将Label组件拖拽到【库】面板中,导入Label组件,如图2-4所示。
图2-4导入Label组件
(4)在影片所在目录新建classes文件夹,并在文件夹中创建calculator.as文件。
在【属性】检查器中设置Flash影片的文档类为“classes.calculator”,如图2-5所示。
图2-5设置文档类
关于文档类等知识,请参考本书面向对象的编程等相关章节
(5)在calculator.as文件中创建包文件,并导入影片需要使用的各种外部类。
同时,在包中创建文档类,如下所示。
packageclasses{
//创建名为classes的包
importflash.display.Bitmap;
importflash.display.BitmapData;
//导入位图数据类和位图类
importflash.display.MovieClip;
//导入影片剪辑类
importflash.display.Sprite;
//导入基类
importflash.geom.ColorTransform;
//导入颜色转换类
importflash.events.MouseEvent;
//导入鼠标事件类
importfl.controls.Label;
//导入标签组件类
importflash.text.TextFormat;
//导入文本格式类
importflash.text.TextField;
//导入文本字段类
publicclasscalculatorextendsSprite{
//创建主字定义类
}
}
(6)在主自定义类中声明各种变量,并为其赋值。
同时,将计算器中数字键的标签作为元素添加到数组中,如下所示。
privatevarbgMap:
bgmap=newbgmap(550,400);
privatevarbgImage:
Bitmap=newBitmap(bgMap);
//实例化背景图像位图
privatevarcalcImage:
calcbg=newcalcbg();
//实例化计算器的背景
privatevarcalc:
MovieClip=newMovieClip();
//实例化计算器的元件
privatevarbackBtn:
bacbtn=newbacbtn();
//实例化后退按钮的元件
privatevarclsBtn:
clsbtn=newclsbtn();
//实例化清零按钮的元件
privatevarcolor:
ColorTransform;
//实例化颜色转换对象,用于按钮的特效
privatevarbtnArray:
Array=newArray();
//实例化按钮的数组
privatevarnameArray:
Array=newArray("7","8","9","/","4","5","6","*","1","2","3","-","0","%","=","+");
//实例化按钮的名称数组
privatevaroutputForm:
TextField=newTextField();
//实例化输出数据的文本字段
privatevaroutputStyle:
TextFormat=newTextFormat();
//实例化输出数据的文本字段样式
privatevarnum1:
Number=0;
//实例化第一个运算数
privatevarnum2:
Number=0;
//实例化第二个运算数
privatevaroperator:
String="0";
//实例化运算符的初始值
privatevarnumExist:
Boolean=false;
//实例化判断数字是否存在的逻辑数据
privatevaroperatorExist:
Boolean=false;
//实例化判断运算符是否存在的逻辑数据
privatevarsecondNumExist:
Boolean=false;
//实例化第二个数字是否存在的逻辑数据
(7)自定义loadBGImage()函数和loadCalcImage()函数,加载影片背景以及计算器的背景,如下所示。
privatefunctionloadBGImage():
void{
//自定义loadBGImage()函数
bgImage.x=0;
bgImage.y=0;
stage.addChild(bgImage);
/*定义影片背景图像的位置,并将其添加到舞台中*/
}
privatefunctionloadCalcImage():
void{
//自定义loadCalcImage()函数
with(calcImage){
//定义calcImage影片剪辑元件的属性
x=0;
y=0;
//定义元件的坐标
addEventListener(MouseEvent.MOUSE_DOWN,dragUp);
addEventListener(MouseEvent.MOUSE_UP,putDown);
//为元件添加鼠标拖拽事件
}
with(calc){
//定义计算器的属性
x=240;
y=50;
//定义计算器的坐标
addChild(calcImage);
//将计算器背景添加到计算器中
}
stage.addChild(calc);
//将计算器添加到影片中
}
关于with(){}语句的使用方法,请参考本书流程控制的相关章节
(8)自定义dragUp()函数和putDown()函数,用于控制计算器的拖拽事件,如下所示。
privatefunctiondragUp(event:
MouseEvent=null):
void{//定义计算器拖拽的事件
calc.startDrag();
}
privatefunctionputDown(event:
MouseEvent=null):
void{//定义计算器被放下的事件
calc.stopDrag();
}
(9)自定义loadLeftBtn()函数,分别定义清零按钮和后退按钮的属性,并为其设置鼠标单击事件,如下所示。
privatefunctionloadLeftBtn():
void{
with(clsBtn){
//定义清零按钮的属性
x=11;
y=39;
//定义清0按钮的坐标
addEventListener(MouseEvent.MOUSE_OVER,btnHover);
addEventListener(MouseEvent.MOUSE_OUT,btnOut);
addEventListener(MouseEvent.CLICK,clsClick);
//为按钮添加鼠标事件
buttonMode=true;
//设置按钮的模式
}
calc.addChild(clsBtn);
//将按钮添加到计算器中
with(backBtn){
//设置后退按钮的属性
x=11;
y=92;
//按钮的坐标
addEventListener(MouseEvent.MOUSE_OVER,btnHover);
addEventListener(MouseEvent.MOUSE_OUT,btnOut);
buttonMode=true;
addEventListener(MouseEvent.CLICK,backClick);
//为按钮添加鼠标事件并设置按钮模式
}
calc.addChild(backBtn);
//将按钮添加到计算器中
functionclsClick(event:
MouseEvent=null):
void{
//定义清零按钮的鼠标单击事件
num1=0;
num2=0;
//分别将运算的数字清零
outputForm.text="0";
//设置输出的文本字段为0
operator="";
//清空运算符
numExist=false;
operatorExist=false;
secondNumExist=false;
//设置所有运算符和数字的逻辑值为否
}
functionbackClick(event:
MouseEvent=null):
void{
//定义后退按钮的鼠标事件
outputForm.text=outputForm.text.substr(0,outputForm.text.length-1);
//定义输出的文本字段内容减去1位
if(secondNumExist==false){
//判断第2个数字是否存在,如不存在
num1=Number(outputForm.text);
//将输出的文本设置为第1个数字
}else{
//否则
num2=Number(outputForm.text);
//设置为第2个数字
}
}
}
(10)自定义btnHover()函数和btnOut()函数,用于响应鼠标滑过按钮的事件,设置按钮的颜色转换滤镜,如下所示。
privatefunctionbtnHover(event:
MouseEvent=null):
void{
color=event.target.transform.colorTransform;
color.greenOffset=30;
event.target.transform.colorTransform=color;
}
privatefunctionbtnOut(event:
MouseEvent=null):
void{
color=event.target.transform.colorTransform;
color.greenOffset=0;
event.target.transform.colorTransform=color;
}
关于颜色转换滤镜的内容,请参考本书滤镜的相关章节
(11)自定义loadCalcBtn()函数,通过循环创建计算器中的按钮,并定义其属性。
同时,将nameArray数