Avatar billede nikolajdu Nybegynder
30. april 2001 - 20:35 Der er 14 kommentarer og
1 løsning

Omregning til Minutter og sekunder.

Jeg får en variabel fra RealPlayer, der fortæller hvor langt et LydClip er nået. Dette er angivet i milisekunder. Hvordan får jeg omregnet det til minutter og sekunder??

Lige nu får jeg løbende opdateret værdien, men altså i milisekunder...

/Nikolaj
Avatar billede jumper Nybegynder
30. april 2001 - 20:36 #1
1000 millisekunder er 1 sekund. 60 sekunder er 1 minut. Derfra burde du nemt kunne lave resten ;)

/Thor
Avatar billede nikolajdu Nybegynder
30. april 2001 - 20:44 #2
Yep I know. Problemet er vist at jeg har siddet med det her script alt for længe og kan ikke tænke klart, så jeg tænkte på den lette løsning. At få pastet et svar... *gg*
Avatar billede jakoba Nybegynder
30. april 2001 - 23:08 #3
var millisecs =  det_du_har;
var seconds = Math.round( millisecs/1000 );
var minutes = Math.floor( seconds/60 );
seconds = second%60;

så er
minutes == antal minutter
og
seconds == antal sekunder

mvh JakobA
Avatar billede jakoba Nybegynder
30. april 2001 - 23:10 #4
måske det virker bedre med et s foran % :)
seconds = seconds%60;
Avatar billede nikolajdu Nybegynder
30. april 2001 - 23:28 #5
hvad gør math.floor og %60??
Avatar billede jakoba Nybegynder
30. april 2001 - 23:40 #6
Math er et standard objekt der altid findes og som indeholder en masse matematiske funktioner (sinus, logaritmer, ...)
Math.round afrunder et floatingpoint-tal så det bliver et heltal.
Math.floor runder-ned. Dvs den klipper tallene efter kommaet væk.

% er operatoren for divisions-rest (eg 13 % 5 gir rest 3).

mvh JakobA
Avatar billede nikolajdu Nybegynder
30. april 2001 - 23:59 #7
Hvorfor virker den her ikke? realHvor er en variabel realPlayer sætter til 0, når den ikke spiller. Derfor må den ikke dividere hvis den er 0. DEt hele funker undtaget denne sidste lille rettelse.

Fejlen nu er at den siger den mangler en ), men jeg kan ikke lige gennemsku det.

<script language = \"JavaScript\">
<!--
function PassFlash(){

    var realHvad = document.realDu.GetPlayState();
    var realHvor = document.realDu.GetPosition();
    var realHvorLang = document.realDu.GetLength()

if (realHvor!0){
    var seconds = Math.round(realHvor/1000);
    var minutes = Math.floor(seconds/60);
    seconds = seconds%60;
    document.realForm.sekunder= seconds;
    document.realForm.minutes= minutes;
}
   
    window.document.movie.SetVariable(\"sekund\", seconds);
    window.document.movie.SetVariable(\"minut\", minutes);
    window.document.movie.SetVariable(\"status\", realHvad);
    window.document.movie.SetVariable(\"realHvor\", realHvor);
    window.document.movie.SetVariable(\"realHvorLang\", realHvorLang);
    setTimeout(\"PassFlash()\",10);

}
PassFlash();

//-->
</script>

<form name=\"realForm\">
<input type=\"Text\" value=\"0\" name=\"sekunder\">&nbsp Sekunder
<input type=\"Text\" value=\"0\" name=\"minutter\">&nbsp Minutter

</form>
Avatar billede nikolajdu Nybegynder
01. maj 2001 - 00:01 #8
Jeg ved godt at jeg ikke har lavet Netscape tjeck. Netscape har lavet Flash pluginnet om så man ikke længere kan sende variabler fra javaScript til Flash.
Avatar billede jakoba Nybegynder
01. maj 2001 - 00:11 #9
linien:
if (realHvor!0){

vil virke bedre med != operator ( ! alene betyter NOT )

if (realHvor!=0){

men hvorfor overhodedet teste? realHvor er jo tælleren de steder der divideres. Det er kun nævneren der ikke må være nul.
Avatar billede nikolajdu Nybegynder
01. maj 2001 - 00:20 #10
Det er det jeg siger jeg har stirret mig blind på det her skidt.

1. Jo, jeg ville også bruge != og ikke !.
2. Selvfølgelig har du ret i at det slet ikke er nødvendigt.
3. Jeg havde glemt value i document.realForm.sekunder.value
4. Den fejl jeg får nu er document.realForm.sekunder og document.realForm.minutes = minutes; er \"Null eller ikke et objekt\"

Har ændret dem til:

document.realForm.sekunder.value = seconds;
document.realForm.minutes.value = minutes;
Avatar billede jakoba Nybegynder
01. maj 2001 - 00:26 #11
hvis den der  passFlash funktion ligger i head bliver den startet såsnart brovseren har indlæst den. Det skulle vel ikke tilfældigvis være længe før brovseren udlægger din form realForm?
Læg evt kaldet til til passFlash() ind i body kommandoen som en onload event:

<body ... onload=\"passFlash()\">
Avatar billede jakoba Nybegynder
01. maj 2001 - 00:32 #12
Ups. Dumt \"hvis ...\". den bliver startet straks efter indlæsning uanset hvor den ligger.
Avatar billede nikolajdu Nybegynder
01. maj 2001 - 00:40 #13
Meget mærkeligt. Hvis jeg ændrer formens navn fra \"realForm\" til \"tester\" og samtidigt til document.tester - Så virker det. Det kan sgu da næppe være et reserveret ord??

passFlash() ligger til sidst inde i body. Du vil have at jeg først kalder scriptet, når jeg starter Real Player eller hvad?? Er det fordi jeg kører den løkke uden at have brug for den at du vil vente??

Hvis du har Real Player installeret, Flash 5 plugin og IE kan du se det i funktion her. (sikke nogle krav, men det her er altså også bare et forsøg.)

http://www.nikolajdu.dk/stream/realcontrol3.html

Scriptet der virker ser sådan her ud. Har endnu ikke implementeret minut og sekund i Flash. Ville lige have det til at virke i javaScript først.

<HTML>
<HEAD>
<TITLE>RealControl</TITLE>

</HEAD>
<BODY bgcolor=\"#000066\" text=\"White\">


<form name=\"tester\">
<input type=\"text\" value=\"hallo\" name=\"minutter\" size=\"7\" disabled readonly>
minutter
<input type=\"text\" value=\"hallo\" name=\"sekunder\" size=\"7\" disabled readonly>
Sekunder
<input type=\"text\" value=\"hallo\" name=\"hvorLang\" size=\"7\" disabled readonly>
Så langt er Clippet

</form>

<br>

<OBJECT classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"
codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0\"
WIDTH=300 HEIGHT=200 NAME=movie>
<PARAM NAME=movie VALUE=\"realControl.swf\">
<PARAM NAME=quality VALUE=high>
<PARAM NAME=bgcolor VALUE=#000066>

<EMBED src=\"realControl.swf\" quality=high bgcolor=#000066  WIDTH=300 HEIGHT=200 TYPE=\"application/x-shockwave-flash\" PLUGINSPAGE=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\"></EMBED>
</OBJECT>
<br>


<object name=\"realDu\" id=\"RVOCX\" classid=\"CLSID:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA\" width=\"0\" height=\"0\">
  <param name=\"SRC\" value=\"musik.rm\">
  <param name=\"CONTROLS\" value=\"ImageWindow\">
  <param name=\"CONSOLE\" value=\"cons\">
  <embed autostart=\"false\" nologo=\"true\" name=\"realDu\" src=\"musik.rm\" type=\"audio/x-pn-realaudio-plugin\" width=\"0\" height=\"0\" controls=\"ImageWindow\" console=\"cons\">
  </embed>
  <param name=\"nologo\" value=\"true\">
  <param name=\"autostart\" value=\"false\">
</object>

<br>


<script language = \"JavaScript\">
<!--
function PassFlash(){
   
    var realHvad = document.realDu.GetPlayState();
    var realHvor = document.realDu.GetPosition();
    var realHvorLang = document.realDu.GetLength();   
    var seconds = Math.round(realHvor/1000);
    var minutes = Math.floor(seconds/60);
    seconds = seconds%60;
    document.tester.sekunder.value = seconds;
    document.tester.minutter.value = minutes;
   
    window.document.movie.SetVariable(\"sekund\", seconds);
    window.document.movie.SetVariable(\"minut\", minutes);
    window.document.movie.SetVariable(\"status\", realHvad);
    window.document.movie.SetVariable(\"realHvor\", realHvor);
    window.document.movie.SetVariable(\"realHvorLang\", realHvorLang);
    setTimeout(\"PassFlash()\",10);

}
PassFlash();

//-->
</script>


</BODY>
</HTML>
Avatar billede jakoba Nybegynder
01. maj 2001 - 00:48 #14
Joe, men det ser jo også helt fint ud. Formen er indlæst før funktionen starter. Det er det væsentlige.

hvorfor pokker den foretrækker \"tester\" fremfor \"realForm\" har jeg ingen anelse om. Mystisk.

mvh JakobA (godnat)
Avatar billede nikolajdu Nybegynder
01. maj 2001 - 00:51 #15
Ja, meget mærkeligt.

Som altid tak for hjælpen, God nat og 1. Maj.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester