Flashhilfe.de - Flash Community

Eine x Belibige Zahl als Zeit darstellen [Flash 9]

 


AntwortenRegistrieren Seite1  

hanssonny#1
Benutzerbild von hanssonny
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?
Kerstin77#2
Benutzerbild von Kerstin77
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,
Kerstin
Wer Rechtschreibfehler findet, darf sie gerne behalten.
hanssonny#3
Benutzerbild von hanssonny
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
Kerstin77#4
Benutzerbild von Kerstin77
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,
Kerstin
Wer Rechtschreibfehler findet, darf sie gerne behalten.
hanssonny#5
Benutzerbild von hanssonny
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:
1onEnterFrame = funktion ....


schreib bekomm ich einen compiler fehler
Sleepingbeast#6
Benutzerbild von Sleepingbeast
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
hanssonny#7
Benutzerbild von hanssonny
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:
1totaltime = 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
Sleepingbeast#8
Benutzerbild von Sleepingbeast
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'
hanssonny#9
Benutzerbild von hanssonny
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:
1onEnterFrame = 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?
Kerstin77#10
Benutzerbild von Kerstin77
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
hanssonny#11
Benutzerbild von hanssonny
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
hanssonny#12
Benutzerbild von hanssonny
Beiträge: 30
Registriert: Aug 2008

Themenautor/in

09.06.2010, 14:51

habs schon gelöst danke

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Javascript new line [Flash CS5] 23.11.2020 - user01234
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2022 Sebastian Wichmann - Flashhilfe.de