计算器实例

闪客沙龙

文/大成

1、源文件下载

2、源代码解释

 

一、电影属性:

1、属性:

2、网格:

点“查看”、“网格”、“编辑网格”后跳出下图设置网格。

二、键盘制作:

1、单个按钮的制作:

(1)数字按钮:(0-9,pi)

新建按钮组件,取名0 ,在“一般”帧上,用矩形工具用深兰色画个(40象素*30象素)按钮,用字符工具在按钮上输入“0”,其他按钮可以复制后,改组件名和按钮文字,这样可以保持按钮的颜色和大小一致。

(2)操作符按钮:(+ - * / . = c ):

新建按钮组件,取名+ ,在“一般”帧上,用矩形工具用浅兰色画个(40象素*30象素,其中c按钮为140象素*30象素,颜色选绿色)按钮,用字符工具在按钮上输入“+”,在“反应区”帧插入空白帧(按F5键)。其他按钮可以复制后,改组件名(注意:“/”号不可做组件名,可以用div代替)和按钮文字,这样可以保持按钮的颜色和大小一致。

这里特别注意:操作符按钮和数字按钮在制作上是不同的。

2、键盘(keypad):

新建图形组件keypad,分别把所有按钮按下图的机构布局拖拽到该组件里。

分别用鼠标左键单击每个按钮,点右键选择“动作”,用“专家模式”分别输入其“对象动作”代码。

(1)键盘c 的“对象动作 ”代码:

on (release, keyPress "<Delete>") {
call ("/Display:Initialize");
}

(2)键盘0的“对象动作 ”代码:(注意:1,2,3,4,5,6,7,8,9的按钮,将引号内的数字改成该按钮的数字):

on (release, keyPress "0") {
/Display:Digit = "0";
call ("/Display:Add Digit");
}




(3)键盘*的“对象动作 ”代码:(注意:-,+,div的按钮,将引号内的操作符改成该按钮的操作符,这里特别强调:div按钮的操作符是"/"):
on (release, keyPress "*") {
call ("/Display:Perform Operation");
/Display:Operator = "*";
/Display:Operand = /Display:Display;
}


(4)键盘. 的“对象动作 ”代码:

on (release, keyPress ".") {
if (Number(/Display:Decimal) == Number(false)) {
/Display:Decimal = true;
/Display:Digit = ".";
call ("/Display:Add Digit");
}
}

(5)键盘= 的“对象动作 ”代码:

on (release, keyPress "<Enter>") {
call ("/Display:Perform Operation");
}


(6)键盘pi 的“对象动作 ”代码:
on (release) {
/Display:Display = "";
/Display:Digit = "3.141592654";
call ("/Display:Add Digit");
}

三、显示窗口:

新建电影剪辑组件Display1。

1、Display层:

将第一层改为层名Display,选文本工具按下图画出一个(180象素*30象素)文本框,也就是计算器的动态显示窗口,输入“0”,表示初始值为0。

在“文本选项”面板里选择“动态文本”,变量名:display 。在“段落”面板中选择右对齐排列方式,在第35帧处查入空白帧(F5)

2、Action层:

添加新图层,层名为 Control Actions 。

(1)初始化(Initialize)帧动作:

在Control Actions层的第1帧,帧标签名为 Initialize ,在“帧动作”面板下用“专家模式”输入以下代码。

Memory = "0";
Display = "0";
Decimal = false;
Done = false;
Operator = "";
stop ();

(2)数字累加(Add Digit)帧动作:

在Control Actions层的第11帧,帧标签名为 Add Digit ,在“帧动作”面板下用“专家模式”输入以下代码。

if (Number(Done) == Number(true)) {
Done = false;
Decimal = false;
Display = "0";
}
if (Display eq "0" and not (Display eq ".")) {
Display = Digit;
} else {
Display = Display add Digit;
}

(3)执行运算操作(Perform Operation)帧动作:

在Control Actions层的第21帧,帧标签名为 Perform Operation ,在“帧动作”面板下用“专家模式”输入以下代码。

if (Operator eq "+") {
Display = Number(Operand)+Number(Display);
}
if (Operator eq "-") {
Display = Operand-Display;
}
if (Operator eq "*") {
Display = Operand*Display;
}
if (Operator eq "/") {
Display = Operand/Display;
}
Operator = "";
Decimal = false;
Done = true;

 



四、主场景:

1、背景Background层:

改层名为Background,用矩型工具在显示窗口处画一个黑色的窗口。

2、按钮Buttons层:

新建图层2,改层名为Buttons,将图库中的keypad拖拽到第1帧。

3、显示Display层:

新建图层3,改图层名为Display,将图库中的Display1拖拽到第1帧,防在黑色窗口的上面,将“实例”窗口中的名称输入:Display

五、测试存盘:

Ctrl+Enter 测试影片,导出SWF文件,保存FLA文件。

 

 

总结:1、通过键盘组件keypad里的每个按钮的“对象动作”代码,获得运算数和运算符。

2、通过显示组件Display1里的动态文本变量Display,显示输入内容和运算结果。该组件里的Action层的三个帧动作,分别完成初始化、记录运算数和运算三个操作。