我在FormulaPaster的基础上,写了Calculator 计算器类,提供了模拟一个科学计算器所需的函数.
/**
* Calculator 计算器类
* Verson 1.0
* 2006.8.20
* Copyright CYJB
*///
/*
* 模拟科学计算器的功能
* 1.数据输入及计算(加(+),减(-),乘(*),除(/),乘(^),取模(%)).
* 2.支持正负数.
* 3.支持括号.
* 4.支持计算函数(平方,开方,幂运算,对数,三角函数).
* 5.支持科学记数法的转换
* 6.支持进制转换(2~36)
* 7.支持数字分组
* 8.支持数据暂存
* 9.支持统计计算
* 10.支持角度(degree),弧度(radian),梯度(grads)转换
*/
import mx.transitions.BroadcasterMX;
class Calculator {
private var _value:String = "0";
private var isgroup:Boolean = false;
private var data:Array;
private var datam:Object;
private var formula = [];
private var isnew:Number = 3;
private var _memory:Array;
private var _system:Number = 10;
private var units:Number = 0;
private var backets:Array;
private var lastData:Object;
private var _isE:Boolean = false;
static var __initBroadcaster = BroadcasterMX.initialize(Calculator.prototype, true);
public var addListener:Function;
public var removeListener:Function;
public var broadcastMessage:Function;
public var _listeners:Array; //事件监听
//构造函数
public function Calculator() {
this.backets = [];
this._memory = [];
this.lastData = {sign:"+", value:0};
this._listeners = [];
this.addListener(this);
}
private function broadMessage(s:String) {
this.broadcastMessage("onKeyDown", this, s);
this.broadcastMessage("onChange", this, "KeyChange");
} //基本功能
public function C() { //清除键
this._value = "0";
this.formula = [];
this.backets = [];
this.isnew = 3;
this.lastData = {sign:"+", value:0};
this.broadMessage("C");
}
public function CE() { //清空键
this._value = "0";
this.isnew = 3;
this.broadMessage("CE");
}
public function BackSpace() {
//BackSpace
if (this.isnew == 0) {
this._value = this._value.slice(0, -1);
if (this._value.length == 0) {
this._value = "0";
}
this.broadMessage("BackSpace");
}
}
public function numbers(n:String) {
//输入数字
n = n.toUpperCase();
if (this.isnew) {
this._value = "";
}
this.isnew = 0;
//判断输入的数字是否在数制范围内
var nc = n.charCodeAt(0);
if (this._system=48 && nc10) {
if ((nc>=48 && nc=65 && nc
本文转自:http://www.5uflash.com/flashjiaocheng/Flashaschengxu/271.html
/**
* Calculator 计算器类
* Verson 1.0
* 2006.8.20
* Copyright CYJB
*///
/*
* 模拟科学计算器的功能
* 1.数据输入及计算(加(+),减(-),乘(*),除(/),乘(^),取模(%)).
* 2.支持正负数.
* 3.支持括号.
* 4.支持计算函数(平方,开方,幂运算,对数,三角函数).
* 5.支持科学记数法的转换
* 6.支持进制转换(2~36)
* 7.支持数字分组
* 8.支持数据暂存
* 9.支持统计计算
* 10.支持角度(degree),弧度(radian),梯度(grads)转换
*/
import mx.transitions.BroadcasterMX;
class Calculator {
private var _value:String = "0";
private var isgroup:Boolean = false;
private var data:Array;
private var datam:Object;
private var formula = [];
private var isnew:Number = 3;
private var _memory:Array;
private var _system:Number = 10;
private var units:Number = 0;
private var backets:Array;
private var lastData:Object;
private var _isE:Boolean = false;
static var __initBroadcaster = BroadcasterMX.initialize(Calculator.prototype, true);
public var addListener:Function;
public var removeListener:Function;
public var broadcastMessage:Function;
public var _listeners:Array; //事件监听
//构造函数
public function Calculator() {
this.backets = [];
this._memory = [];
this.lastData = {sign:"+", value:0};
this._listeners = [];
this.addListener(this);
}
private function broadMessage(s:String) {
this.broadcastMessage("onKeyDown", this, s);
this.broadcastMessage("onChange", this, "KeyChange");
} //基本功能
public function C() { //清除键
this._value = "0";
this.formula = [];
this.backets = [];
this.isnew = 3;
this.lastData = {sign:"+", value:0};
this.broadMessage("C");
}
public function CE() { //清空键
this._value = "0";
this.isnew = 3;
this.broadMessage("CE");
}
public function BackSpace() {
//BackSpace
if (this.isnew == 0) {
this._value = this._value.slice(0, -1);
if (this._value.length == 0) {
this._value = "0";
}
this.broadMessage("BackSpace");
}
}
public function numbers(n:String) {
//输入数字
n = n.toUpperCase();
if (this.isnew) {
this._value = "";
}
this.isnew = 0;
//判断输入的数字是否在数制范围内
var nc = n.charCodeAt(0);
if (this._system=48 && nc10) {
if ((nc>=48 && nc=65 && nc
本文转自:http://www.5uflash.com/flashjiaocheng/Flashaschengxu/271.html