PDA

Просмотр полной версии : стильный калькулятор, проблема с точкой


Sintesis
04.07.2008, 19:12
начал изучать экшн скрипт, добрался до создания калькулятора всё вроде-бы получилось только калькулятор проблемный вышел - точка десятичной дроби конфликтует с нулём :( вот код:

var tablo = 0;
var num:Number = null;
var tochka:Boolean = true;
var numbers = 0;
var str:String = " " ;
var memory = null;
var operations = null;
but_ravno.enabled = false;
but_1.onPress = function():Void {
num=1;
myAdd();
}
but_2.onPress = function():Void {
num=2;
myAdd();
}
but_3.onPress = function():Void {
num=3;
myAdd();
}
but_4.onPress = function():Void {
num=4;
myAdd();
}
but_5.onPress = function():Void {
num=5;
myAdd();
}
but_6.onPress = function():Void {
num=6;
myAdd();
}
but_7.onPress = function():Void {
num=7;
myAdd();
}
but_8.onPress = function():Void {
num=8;
myAdd();
}
but_9.onPress = function():Void {
num=9;
myAdd();
}
but_0.onPress = function():Void {
num=0;
myAdd();
}
but_tochka.onPress = function():Void {
if (tochka) {
tochka = false;
str+= ".";
}
}
function myAdd():Void {
if (tochka) {
numbers = numbers*10+num;
}else{
numbers+=num/Math.pow(10,n);
n++;
}
if (str!= 0) {
str = str+num;
}else{
str = String(num);
}
if (str.length<17) {
tablo = str;
} else {
tablo = numbers;
}
}
but_znak.onPress = function ():Void {
if (str!= 0 && str!= "" ) {
numbers*=-1;
if (str.substring(0 , 1)!= "-" ) {
str = "-"+str;
}else{
str = str.substring(1);
}
if (str.length<17) {
tablo = str;
} else {
tablo = numbers;
}
}
}
but_clear.onPress = function():Void {
tablo=0, num=0, tochka=true, numbers=0, n=l, str="";
but_ravno.enabled=true, block2(true), block(true);
}
but_plus.onPress = function ():Void {
calc("plus");
}
but_minus.onPress = function ():Void {
calc("minus");
}
but_umn.onPress = function ():Void {
calc("umn");
}
but_del.onPress = function ():Void {
calc("dlm");
}
but_stepen.onPress = function ():Void {
calc("step");
}
function calc (operat:String):Void {
memory = numbers;
numbers = 0;
str = " " ;
operations = operat;
but_ravno.enabled = true;
block (false);
block2 (true);
}
but_ravno.onPress = function():Void {
var result:Number = null;
if (operations == "plus") {
result = memory + numbers;
}
if (operations == "minus") {
result = memory - numbers;
}
if (operations == "umn") {
result = memory * numbers;
}
if (operations == "dlm") {
result = memory / numbers;
}
if (operations == "stepen") {
result = Math.pow(memory, numbers);
}
numbers = result;
str = String(result);
tablo = result;
but_ravno.enabled = false;
block (true);
biock2 (false);
}
function block (par:Boolean):Void {
but_plus.enabled=par, but_umn.enabled=par, but_minus.enabled=par;
but_del.enabled=par;
}
function block2(par:Boolean):Void {
for (var i = 0; i<=9; i++) {
eval("but_"+i).enabled = par;
}
but_tochka.enabled = par;
}

думаю проблема скрывается в функции myAdd, подскажите как это исправить. Сам калькулятор во вложении. Ещё степень не выводтся но это не главное, помогите с дробными числами начинающимися с ноля.

RealShat
04.07.2008, 20:27
Я так понимаю, калькулятор из книжки Гурского. Если да, то посмотрите на диске который был с ней в комплекте.

Sintesis
04.07.2008, 20:48
Да, правильно код с неё, но я её в и-нете скачал, а приложения к ней не нашол.
Может быть кто-то знает где можно скачать приложение к книжке Дмитрия Гурского "Action Script 2.0"? Дайте пожалуйста ссылку

Mnilionic
05.07.2008, 04:24
хм... а у меня книжка куплина, а диска, собаки, не дали.

Sintesis
05.07.2008, 04:39
ха эт конечно ещё хуже, а ты калькулятор делал по ней? Всё работает?

Mnilionic
05.07.2008, 04:48
нее... я калькулятор делал в пятой версии флеша 9 лет назад.
А чего толку от твоего swf, проект давай.

Sintesis
06.07.2008, 01:02
нее... я калькулятор делал в пятой версии флеша 9 лет назад.
А чего толку от твоего swf, проект давай.
9 лет во флэше это сильно, вот проэкт

iNils
07.07.2008, 04:19
Удалил флейм.