Created
February 5, 2013 16:51
-
-
Save codler/4715753 to your computer and use it in GitHub Desktop.
Miniräknare, actionscript 2, 2007-03-30
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| //******************************** | |
| // Made by Han Lin Yap | |
| // Copyright Codler | |
| //******************************** | |
| stop(); | |
| var knapp = new Array();// Kommer att innehålla knapparna. | |
| var m_mall = new Array();// Knappens bakgrund | |
| var knappens_text = new Array(); // Knappens text | |
| /* Start av konfiguering */ | |
| var xstart = 50; // start position för knappar i x-led | |
| var ystart = 100; // start position för knappar i y-led | |
| var xvakum = 50;// Mellan rum i x-led | |
| var yvakum = 50;// Mellan rum i y-led | |
| var xnum = 5; // antal knappar i x-led | |
| var ynum = 4; // antal knappar i y-led | |
| var txt_farg = 0x555555; // Hex-decimaler - Text färgen tex: 0xCCCCCC | |
| var max_tkn = 8; // Max antal tecken på displayen | |
| /* Slut av konfiguering */ | |
| var xstart_tmp = xstart; // Behåller ursprungliga xstart | |
| var ystart_tmp = ystart; // Behåller ursprungliga ystart | |
| var x_tmp // Högsta värdet av bredden | |
| var y_tmp // Högsta värdet av höjden | |
| var k:Number = 0; | |
| /* Ange knapparnas funtioner */ | |
| // Tillgängliga matematiska symboler-> (0-9), (+-*/), (PI), (.), (=), (C), (del) | |
| knappens_text[0] = "7" | |
| knappens_text[1] = "8" | |
| knappens_text[2] = "9" | |
| knappens_text[3] = "*" | |
| knappens_text[4] = "/" | |
| knappens_text[5] = "4" | |
| knappens_text[6] = "5" | |
| knappens_text[7] = "6" | |
| knappens_text[8] = "+" | |
| knappens_text[9] = "-" | |
| knappens_text[10] = "1" | |
| knappens_text[11] = "2" | |
| knappens_text[12] = "3" | |
| knappens_text[13] = "C" | |
| knappens_text[14] = "del" | |
| knappens_text[15] = "0" | |
| knappens_text[16] = "." | |
| knappens_text[17] = "PI" | |
| knappens_text[18] = "e" | |
| knappens_text[19] = "=" | |
| // Tar bort undefined i tomma knappens_text | |
| function fyll(kn) { | |
| if (kn == undefined) { | |
| kn = ""; | |
| }; | |
| return kn; | |
| } | |
| // y-led | |
| for (j=0;j<ynum;j++) { | |
| // x-led | |
| for (i=0;i<xnum;i++) { | |
| // Knappens bakgrund | |
| attachMovie("mall","mall"+k, 100+k) | |
| m_mall[k] = eval("mall"+k) | |
| m_mall[k]._x = xstart | |
| m_mall[k]._y = ystart | |
| // Siffror, Text | |
| createTextField("knapp"+k, 1000+k, xstart-5, ystart-8, 40, 40); | |
| knapp[k] = eval("knapp"+k) | |
| knapp[k].selectable = false; | |
| myformat = new TextFormat(); | |
| myformat.color = txt_farg;// Text färg | |
| myformat.bold = true; | |
| myformat.size = 20 | |
| myformat.knapp[k].font = "_sans"; | |
| knapp[k].text = fyll(knappens_text[k]); // Knappens text | |
| knapp[k].setTextFormat(myformat); | |
| xstart += xvakum; | |
| k++; | |
| } | |
| x_tmp = xstart; | |
| xstart = xstart_tmp; | |
| ystart += yvakum; | |
| } | |
| y_tmp = ystart; | |
| ystart = ystart_tmp; | |
| // bakgrunden | |
| attachMovie("bg","bg"+1, 1) | |
| bg1._width = x_tmp | |
| bg1._height = y_tmp | |
| bg1._x = 100 | |
| bg1._y = 50 | |
| bg1._x = bg1._x+xstart | |
| bg1._y = bg1._y+ystart | |
| // Miniräknarens display bg | |
| attachMovie("displaybg","displaybg"+1, 2) | |
| displaybg1._alpha = 50 | |
| displaybg1._x = bg1._x | |
| displaybg1._y = 40 | |
| // Miniräknarens display | |
| createTextField("displayen", 3, xstart, 10, 205, 50); | |
| displayen.selectable = true; | |
| myformat2 = new TextFormat(); | |
| myformat2.color = txt_farg;// Text färg | |
| myformat2.bold = true; | |
| myformat2.displayen.font = "_sans"; | |
| myformat2.size = 50 | |
| myformat2.align = "right" | |
| displayen.text = "0"; | |
| displayen.setTextFormat(myformat2); | |
| displayen.maxChars = 8 | |
| // Loppar igenom alla knappar och tilldelar onPress funktionen för varje knapp. | |
| for (k; k>=0; k--) { | |
| // Ger varsin m_mall en unik värde i "kvar". | |
| m_mall[k].kvar = k; | |
| m_mall[k].onPress = function() { | |
| // anropar kalkulera funktionen och "this.kvar" anger vilken knapp. | |
| displayen.text = kalkulera(knapp[this.kvar].text); | |
| /*Här ska du kommentera bättre! | |
| ^fixade till avrundningen | |
| ^lade dit en exponent knapp | |
| ^fixade till trace-beräkning, | |
| dvs i trace visar den | |
| förkortningen och avrundningens beräkningar. | |
| ^Fixade en bug som jag hittade. | |
| som var att efter man tröck en symbol för andra gången | |
| och sedan tröck på en siffra lade den dit en siffra | |
| istället för en ny enskild siffra som ska hända efter man tröck på en symbol. | |
| ^Fixade så att om man räknar över max_tkn så övergår den till exponent. På så sätt kan man räkna oändligt! =D | |
| annars var det till exempel om max_tkn är 8 så kunde man bara max räkna till 99 999 999. | |
| */ | |
| trace("Talet innan:"+displayen.text) | |
| // Kollar om exponenten finns i displayen och om det behöves förkortas | |
| if (displayen.text.split("e").length == 2 && displayen.text.length > max_tkn) { | |
| /* delar upp i array, i två delar. | |
| e[0] är före talen före exponenten | |
| e[1] är exponenten | |
| */ | |
| e = displayen.text.split("e"); | |
| trace("Display.length:"+displayen.text.length) | |
| trace("Max_tkn:"+max_tkn) | |
| trace("e1:"+e[0]) | |
| trace("e2:"+e[1]) | |
| trace("e1.length:"+ e[0].length + " e2.length:" + e[1].length) | |
| /* Kollar hur många fler tecken det är än max_tkn, | |
| dvs antal tecken som ska bort. | |
| */ | |
| bort = Number(displayen.text.length)-max_tkn; | |
| trace("Antal tkn bort:"+bort+"="+displayen.text.length+" - "+max_tkn) | |
| /* Förkortar e[0] så att e[1] får plats. | |
| ||| e[0] plus e[1] ska få plats i max_tkm | |
| */ | |
| e[0] = e[0].substring(0,e[0].length-bort+1); | |
| // avrundningen | |
| // Kollar ifall det finns decimaler | |
| komma = e[0].split("."); | |
| if (komma.length == 2) { | |
| trace("Antal decimaler:"+Math.pow(10,-komma[1].length+1)) | |
| // avrundar till så många decimaler som kan få plats i ||| se kommentaren ovan. | |
| e[0] = Math.round(e[0] / Math.pow(10,-komma[1].length+1)) * Math.pow(10,-komma[1].length+1); | |
| } | |
| // Lägger ihop e[0] och e[1] | |
| e[0] = e[0] + "e" + e[1]; | |
| displayen.text = e[0]; | |
| } | |
| // Max antal tecken | |
| trace("Talet efter:"+displayen.text) | |
| // Gör möjlig att räkna oändligt stora siffror. Genom att göra om till exponent. | |
| // Kollar om det är större är max_tkn och om inte det redan finns exponent. | |
| if (displayen.text.length > max_tkn && displayen.text.indexOf("e") == -1) { | |
| // bort.length = exponenten // +2 tkn ("e+") | |
| bort = displayen.text.length - max_tkn; | |
| trace(bort) | |
| bort_langd = String(bort).length; | |
| trace(bort_langd) | |
| // Tar bort så att exponenten får plats plus håller inom max_tkn | |
| displayen.text = displayen.text.substring(0, displayen.text.length-bort-Number(bort_langd)-2); | |
| // räknar hur mycket exponenten blev | |
| Total_expo = Number(bort)+Number(bort_langd)+2; | |
| displayen.text = displayen.text + "e+" + Total_expo; | |
| } | |
| displayen.text = displayen.text.substring(0,max_tkn); | |
| displayen.setTextFormat(myformat2); | |
| }; | |
| } | |
| function kalkulera(num) { | |
| // Tillgängliga matematiska symboler-> (0-9), (+-*/), (PI), (.), (=), (C), (del) | |
| // matte funktion (C) | |
| if (num == "C") { | |
| minne = null; // En temporär variabel som används vid symbol | |
| symbol = null; // Nollställer symbol | |
| symbol2 = null; | |
| symbol3 = null; | |
| minne2 = null; | |
| tryckt = false; | |
| return "0" | |
| } | |
| // matte funktion (del) | |
| if (num == "del") { | |
| if (displayen.text.length != 1) { | |
| return displayen.text.substring(0,displayen.text.length-1); | |
| } else if (displayen.text != "0") { | |
| return "0"; | |
| } else { | |
| return displayen.text; | |
| } | |
| } | |
| // matte funktion (.) | |
| if (num == ".") { | |
| punkt = displayen.text.split(".") | |
| if (punkt.length > 1) { | |
| return displayen.text | |
| } | |
| } | |
| // matte funktion (PI) | |
| if (num == "PI") { | |
| return String(Math.PI).substr(0,max_tkn); | |
| } | |
| // matte function (+-*/) | |
| if (num == "+" || num == "-" || num == "*" || num == "/") { | |
| if (minne == null) { | |
| minne = displayen.text; | |
| symbol = num; | |
| return "0"; | |
| } else { | |
| if (symbol3 != null) { | |
| minne = displayen.text; | |
| symbol = num; | |
| symbol3 = null; | |
| return "0" | |
| } | |
| // symbol2 kommer bara innehålla (+-*/) "andra minnet" | |
| symbol2 = symbol; | |
| if (tryckt2 == true) { | |
| tryckt2 = false; | |
| tryckt = true; | |
| symbol = num; | |
| minne = summa(symbol2); | |
| return minne; | |
| } | |
| symbol = num; | |
| tryckt = true; | |
| return summa(symbol2); | |
| } | |
| } | |
| function summa(sym) { | |
| switch (sym) { | |
| case "+": return Number(minne) + Number(displayen.text); | |
| case "-": return Number(minne) - Number(displayen.text); | |
| case "*": return Number(minne) * Number(displayen.text); | |
| case "/": return Number(minne) / Number(displayen.text); | |
| } | |
| } | |
| function summa2(sym) { | |
| switch (sym) { | |
| case "+": return Number(displayen.text) + Number(minne); | |
| case "-": return Number(displayen.text) - Number(minne); | |
| case "*": return Number(displayen.text) * Number(minne); | |
| case "/": return Number(displayen.text) / Number(minne); | |
| } | |
| } | |
| if (num == "=" && symbol3 != null) { | |
| return summa2(symbol3); | |
| } | |
| if (num == "=") { | |
| if (symbol == undefined) { | |
| return displayen.text; | |
| } else { | |
| symbol3 = symbol; | |
| tillbaka = summa(symbol3); | |
| minne = displayen.text; | |
| if (tillbaka == undefined) { | |
| tillbaka = displayen.text; | |
| } | |
| return tillbaka; | |
| } | |
| } | |
| if (tryckt == true) { | |
| tryckt = false; | |
| tryckt2 = true; | |
| return num; | |
| } | |
| // matte funktion (0-9) | |
| if ((displayen.text == "0" && num ne ".") || symbol3 != null) { | |
| if (symbol3 != null) { | |
| minne = null; // En temporär variabel som används vid symbol | |
| symbol3 = null; | |
| } | |
| return num; | |
| } else { | |
| return displayen.text + num; | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment