addZero - Prototype u. Klasse [Flash 6]
| Beiträge: 130 Wohnort: Berlin/Germany Registriert: Mar 2002
| 18.04.2003, 02:13
Hi Folks,
Hier was für eine Punktestandanzeige - inspiriert aus einem Flashforum.de Thread. Ich bin sicher damit hat man viel Spass. Aber fragt nicht nach der Lesbarkeit - vielleicht ergeben sich dennoch neue Erkenntnisse aus dem Skript.
ActionScript:1 2 3 4 5 6 7 | Number.prototype.addZeros = function(p) {
return new Array(p - length(this) + 1).join('0') + this;
};
// Usage:
punkte = 200;
trace(punkte.addZeros(10)); // result: 0000000200
|
oder als Klasse:
ActionScript:1 2 3 4 5 6 7 8 9 10 | Score = function (points) {
this.points = points;
};
Score.prototype.display = function(p) {
return new Array(p - length(this.points) + 1).join('0') + this.points;
};
myScore = new Score(200).display(10);
trace(myScore);
|
Hinweis: Das Skript ist sowohl Flash 5 als auch MX tauglich!
Be inspired!
Liebe Grüsse
Matze K.
[Flashstar]
http://www.flashstar.de[Flashstar]
http://www.flashstar.de | | | Beiträge: 510 Wohnort: Bonn Registriert: Apr 2002
| 26.10.2003, 10:14
Ok, aber warum funktioniert das ganze nichtmehr unter flash 7 (as 1.0)?
da kommt bei mir doch tatsächlich folgendes:
"undefined0undefined0undefined0undefined0undefined0undefined0undefined0undefined200"
scheinbar ist ein lehres Array-Elment im flash7 player undefined:
so klappts auch unter flash 7, vielleicht kann das der Madokan nochma verfeinern & dann auch in die prototypen posten.
ActionScript:1 2 3 4 5 6 7 8 9 10 11 | Number.prototype.addZeros = function(p) {
var a= new Array()
for(var i=0; i<(p - length(this) + 1);i++) {
a.push("");
}
return a.join("0")+ this;
};
// Usage:
punkte = 200;
trace(punkte.addZeros(10)); // result: 0000000200
|
Gruß
PetaLustiK
Schüler, 16Gruß
PetaLustiK
Chemiker, 19 | | | Beiträge: 6981 Wohnort: München Registriert: Jan 2002
| 28.10.2003, 17:10
Scheint ein Bug zu sein.
ActionScript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | //
Number.prototype.addZeros = function(p) {
var a = "", l = p-length(this);
while(a.length < l) {
a += "0";
}
return a + this;
};
// Usage:
punkte = 200;
trace(punkte.addZeros(10)); // result: 0000000200
// #######
Number.prototype.addZeros = function(p) {
return new Array(p - length(this) + 1).join("0").split("undefined").join("") + this;
};
// Usage:
punkte = 200;
trace(punkte.addZeros(10)); // result: 0000000200
|
;)))
Grüsse,
Sebastian Wichmann
Flashhilfe.de Webmaster
http://www.flashhilfe.deJavaScript & JavaFX Freelancer || Flashhilfe @ Twitter || XING Profil | Geändert von Sebastian am 28.10.03 um 17:29 Uhr | |
| | Beiträge: 130 Wohnort: Berlin/Germany Registriert: Mar 2002
Themenautor/in
| 31.10.2003, 11:04
Jungs da habt ihr aber noch nicht folgenden Thread beachtet:
http://www.flashhilfe.de/lesen/forumtipps_0_000_0_97925_97925.html
So ein array ist ja im Grunde auch nichts anderes als eine komplexe Variable (Wertebehälter).
Das Problem kann jedoch viel leichter behoben werden - Publish Setting Flash Player 6. :)
ActionScript:1 2 3 4 5 6 7 8 | // Hier die Anpassung
Number.prototype.addZeros = function(p) {
return new Array(p - length(this) + 1).join('0').split("undefined").join('') + this;
};
// Usage:
punkte = 200;
trace(punkte.addZeros(10)); // result: 0000000200
|
Hinweis: Die Klasse funktioniert einwandfrei - nun wisst Ihr ja was uns in Flash MX 2004 blüht und das nicht nur in AS 2.0. :)
Liebe Grüsse
Matze K.
P.S.: Und denkt daran der Prototype ist für Flash 6 deklariert, dort war die Welt noch nicht ganz so strikt gestrickt!
[Flashstar]
http://www.flashstar.de[Flashstar]
http://www.flashstar.de | Geändert von Madokan am 31.10.03 um 11:10 Uhr | |
| | Beiträge: 6981 Wohnort: München Registriert: Jan 2002
| 31.10.2003, 14:27
???
Das Script hatte ich auch gepostet.... war aber nicht unbedingt ernst gemeint.
>> Jungs da habt ihr aber noch nicht folgenden Thread beachtet:
Doch und das beachte ich nicht erst seit MX 2004. - oder hab ich da was übersehen?
Teste mal folgendes:
ActionScript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ary = new Array(5);
// undefined0undefined0undefined0undefined0undefined
trace(ary.join("0"));
// -------
ary_2 = new Array();
ary_2[0] = "";
ary_2[1] = "";
ary_2[2] = "";
ary_2[3] = "";
ary_2[4] = "";
// 0000
trace(ary_2.join("0"));
|
Laut Flashhilfe gibt man ja mit Array(nr) die Länge des Arrays an.
Schon komisch, oder!?
Grüsse,
Sebastian Wichmann
Flashhilfe.de Webmaster
http://www.flashhilfe.deJavaScript & JavaFX Freelancer || Flashhilfe @ Twitter || XING Profil | Geändert von Sebastian am 31.10.03 um 14:28 Uhr | |
|
| Ähnliche Beiträge zum Thema | |
|
Flashhilfe.de Flash Platform Tipps & Tutorials Flash Platform Andere Programmiersprachen Jobangebote Diskussionen
Flashhilfe News 
Regeln & Bedingungen
|