|
Beiträge: 30 Registriert: Aug 2008
| 26.05.2010, 16:04
Hi leute,
ich hab eine zahl errechnet (diese ist leider aber ein sekundenwert)
ich möchte jetzt dass in meinem dynamischen textfeld nicht 200 sekunden steht sondern:
0h 03m 33s
wie kann ich das bewerkstelligen? |
|
|
Beiträge: 1004 Registriert: Jul 2008
| 26.05.2010, 20:02
Hi,
ActionScript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | function time2schoen(s:Number):String {
var h:Number;
var m:Number;
var s:Number;
var str:String;
if (s > Math.pow(60, 2)) {
h = Math.floor(s/Math.pow(60,2));
s = s%60;
} else {
h = 0;
}
if (s > 60) {
m = Math.floor(s/60);
s = s%60;
} else {
m = 0;
}
str = h + "h " + m + "m " + s + "s";
return str;
}
|
Grüße,
KerstinWer Rechtschreibfehler findet, darf sie gerne behalten. |
|
|
Beiträge: 30 Registriert: Aug 2008
Themenautor/in
| 27.05.2010, 10:38
danke aber leider geht das noch nicht so ganz also ich hab es wie folgt eingebunden:
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 26 27 | var totaltim = Math.round (_totalframes/25);
function totaltim(s:Number):String {
var h:Number;
var m:Number;
var s:Number;
var str:String;
if (s > Math.pow(60, 2)) {
h = Math.floor(s/Math.pow(60,2));
s = s%60;
} else {
h = 0;
}
if (s > 60) {
m = Math.floor(s/60);
s = s%60;
} else {
m = 0;
}
str = h + "h " + m + "m " + s + "s";
return str;
}
totaltime = str;
|
in meinem textfeld steht dann immer undefinied |
Geändert von hanssonny am 27.05.10 um 14:30 Uhr | |
|
|
Beiträge: 1004 Registriert: Jul 2008
| 27.05.2010, 22:49
Doch, das funktioniert. Du musst nur die Funktion auch aufrufen:
ActionScript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | function time2schoen(s:Number):String {
var h:Number;
var m:Number;
var s:Number;
var str:String;
if (s >= Math.pow(60, 2)) { // Achtung, kleine Änderung
h = Math.floor(s/Math.pow(60,2));
s = s%60;
} else {
h = 0;
}
if (s >= 60) { // Achtung, kleine Änderung
m = Math.floor(s/60);
s = s%60;
} else {
m = 0;
}
str = h + "h " + m + "m " + s + "s";
return str;
}
deinTextfeld.text = time2schoen(200);
|
Grüße,
KerstinWer Rechtschreibfehler findet, darf sie gerne behalten. |
|
|
Beiträge: 30 Registriert: Aug 2008
Themenautor/in
| 28.05.2010, 08:17
also ich checks nicht
meine zahl die ich errechne hat die variable totaltim
woher weiß die funktion dass die zahl die der variable totaltim zugeordnet wurde umgewandelt werden soll?
wird das ergebnis der funktion auch in eine variable geschrieben? wenn ja welche?
was meinst du mit funktion aufrufen?
wenn ich
ActionScript:1 | onEnterFrame = funktion ....
|
schreib bekomm ich einen compiler fehler |
|
|
Beiträge: 579 Wohnort: Halle Registriert: Apr 2005
| 28.05.2010, 10:59
Hallo,
eine Funktion ist, stark verallgemeinert, eine Art "Blackbox". Du steckst vorn was rein und hinten kommt was raus. Dafür musst Du die Funktion eben auch aufrufen, wie Kerstin schon geschrieben hat.
Reingesteckt wird Deine Variable totaltim beim Aufruf der Funktion. Am Ende von Kerstins Funktion steht return str. Das ist der Wert, welcher aus der Funktion hinten raus kommt.
Testweise kannst Du ja schonmal eine einfache Ausgabe per trace probieren, also:
ActionScript:1 2 3 4 5 6 7 8 | var totaltim:Number = Math.round (_totalframes/25);
function time2schoen(s:Number):String {
//... hier steht der Rest von Kerstins Funktion
return str;
}
trace(time2schoen(totaltim));
|
Im trace rufst Du damit eben die Funktion auf und steckst dabei als Parameter (in der Klammer nach dem Funktionsnamen) Deine Variable totaltim rein. Die Ausgabe der Funktion (Rückgabewert) wird die dann in diesem Fall per trace angezeigt.
Wenn Du es unbedingt per onEnterFrame machen willst, dann könnte Dein Script wie folgt aussehen:
ActionScript:1 2 3 4 5 6 7 8 9 10 | var totaltim:Number = Math.round (_totalframes/25);
function time2schoen(s:Number):String {
//... hier steht der Rest von Kerstins Funktion
return str;
}
onEnterFrame = function() {
deinTextfeld.text = time2schoen(totaltim);
}
|
Patrick_________________________________________________________
Um Rekursion wirklich zu verstehen, muss man zuerst Rekursion verstehen.
null != 'null' != 0 != '0' |
Geändert von Sleepingbeast am 28.05.10 um 11:02 Uhr | |
|
|
Beiträge: 30 Registriert: Aug 2008
Themenautor/in
| 28.05.2010, 15:34
danke das klappt soweit
jetzt habe ich noch einen wert der sich jeden frame ändern:
ActionScript:1 2 3 | onEnterFrame = function() {
currenttim = Math.round (_currentframe/25);
};
|
wie muss ich da vor gehen?
hab den anderen wert wie folgt in ein dynamisches textfeld geschrieben:
ActionScript:1 | totaltime = time2schoen(totaltim);
|
wenn ich das selbe mit currenttim mache dann kommt immer NaN |
Geändert von hanssonny am 28.05.10 um 15:41 Uhr | |
|
|
Beiträge: 579 Wohnort: Halle Registriert: Apr 2005
| 28.05.2010, 23:55
Es kommt eben immer darauf an, was Du mit einem Wert machen willst. Die Meldung NaN ist die Abkürzung für Not A Number, also dass es sich bei dem entsprechenden Wert um keine Zahl handelt. Genau so ist es ja auch, da Kerstins Funktion als Paramter (also den Wert in der Klammer) einen Wert vom Typ Number erwartet. Vermutlich übergibst Du da aber einen Wert vom Typ String.
Am einfachsten wäre es jetzt sicher, Du postest mal Dein gesamtes Script.
Patrick_________________________________________________________
Um Rekursion wirklich zu verstehen, muss man zuerst Rekursion verstehen.
null != 'null' != 0 != '0' |
|
|
Beiträge: 30 Registriert: Aug 2008
Themenautor/in
| 07.06.2010, 09:51
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 26 27 28 | var totaltim = Math.round (_totalframes/25);
onEnterFrame = function() {
var currenttim = Math.round (_currentframe/25);
};
function time2schoen(s:Number):String {
var h:Number;
var m:Number;
var s:Number;
var str:String;
if (s >= Math.pow(60, 2)) {
h = Math.floor(s/Math.pow(60,2));
s = s%60;
} else {
h = 0;
}
if (s >= 60) {
m = Math.floor(s/60);
s = s%60;
} else {
m = 0;
}
str = h +" h " + m + "m " + s + "s";
return str;
}
totaltime = time2schoen(totaltim);
currenttime = time2schoen(currenttim);
|
also das ist mein gesammtes script
ActionScript:1 | onEnterFrame = function() {
|
das ist das problem, wenn ich das ausklammere dasnn zeigt es die zeit an, jedoch wird sie dann nicht aktuallisiert, gibt es dafür eine alternative? |
|
|
Beiträge: 1004 Registriert: Jul 2008
| 07.06.2010, 22:48
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 | function time2schoen(s:Number):String {
var h:Number;
var m:Number;
var s:Number;
var str:String;
if (s>=Math.pow(60, 2)) {
h = Math.floor(s/Math.pow(60, 2));
s = s%60;
} else {
h = 0;
}
if (s>=60) {
m = Math.floor(s/60);
s = s%60;
} else {
m = 0;
}
str = h+" h "+m+"m "+s+"s";
return str;
}
onEnterFrame = function () {
totaltime = Math.round(_currentframe/25);
trace(totaltime);
};
|
Wer Rechtschreibfehler findet, darf sie gerne behalten. |
Geändert von Kerstin77 am 07.06.10 um 22:48 Uhr | |
|
|
Beiträge: 30 Registriert: Aug 2008
Themenautor/in
| 08.06.2010, 09:09
das geht leider nicht, es wird gar nix mehr angezeigt
also zur erklärung ich benötige zwei zeiten
einmal die totaltime (welche im dynamischen textfeld totaltime ausgegeben wird) diese zeit errechnet sich einmal und bleibt dann fix stehen
und dann die currenttime diese zeit errechnet sich ständig neu weshalb sie dauernd aktuallisiert werden muss |
|
|
Beiträge: 30 Registriert: Aug 2008
Themenautor/in
| 09.06.2010, 14:51
habs schon gelöst danke |
|