Avatar billede nicolai_johannesen Nybegynder
22. oktober 2004 - 14:14 Der er 9 kommentarer og
1 løsning

Tidsmåler til video

Hej! Jeg vil meget gerne efterlyse noget ActionScript-kode til en tidsmåler i minutter og sekunder på min selvlavede videoplayer.
Strukturen er lige nu, at jeg henter/loader en video.swf ind i player.swf via et lille usynligt movieklip.
Lige nu måler jeg selve tiden med en tidsbar med denne kode:

onClipEvent (enterFrame) {
        this._xscale = (100*_root.host.getBytesLoaded()/ _root.host.getBytesTotal());
}

Kan jeg istedet omsætte dette kode til at få udskrevet i minutter og sekunder i et dynamisk tekstfelt. Jeg vil meget gerne bede om nogle kodeekempler. På forhånd mange tak!
Avatar billede rohaje Nybegynder
22. oktober 2004 - 14:45 #1
er ikke testet, men sådan cirka kan det gøres:

function loadStatus() {
    this._xscale = (100*_root.host.getBytesLoaded()/_root.host.getBytesTotal());
    this.tidGået = (getTimer()-startTid)/1000;
    this.tidMangler = (100-this._xscale)*(tidGået/this._xscale);
    this.minutterMangler = Math.floor(this.tidMangler/60);
    this.sekunderMangler = Math.round(this.tidMangler-(this.minutterMangler*60));
    if (this.sekunderMangler<10) {
        this.sekunderMangler = "0"+this.sekunderMangler;
    }
    _root.etTekstfelt.text = "estimeret tid tilbage er "+this.minutterMangler+" minutter og "+this.sekunderMangler+" sekunder";
    if(this._xscale==100){
        this.onEnterFrame=false;
        this._visible=false;
    }
}
function startLoad() {
    //loadFilmen
    loadMovie("film/filmen.swf", host);
    startTid = getTimer();
    loadBaren._xscale=1;
    loadBaren.onEnterFrame = loadStatus;
}
Avatar billede nicolai_johannesen Nybegynder
22. oktober 2004 - 14:51 #2
Cool! Jeg prøver det lige af. Tak for hurtigt svar :oD
Avatar billede rohaje Nybegynder
22. oktober 2004 - 15:01 #3
så lige en lille fejl - rettet , men har som sagt ikke haft tid til at teste det selv

function loadStatus() {
    this._xscale = (100*_root.host.getBytesLoaded()/_root.host.getBytesTotal());
    this.tidGået = (getTimer()-startTid)/1000;
    this.tidMangler = (100-this._xscale)*(this.tidGået/this._xscale);
    this.minutterMangler = Math.floor(this.tidMangler/60);
    this.sekunderMangler = Math.round(this.tidMangler-(this.minutterMangler*60));
    if (this.sekunderMangler<10) {
        this.sekunderMangler = "0"+this.sekunderMangler;
    }
    _root.etTekstfelt.text = "estimeret tid tilbage er "+this.minutterMangler+" minutter og "+this.sekunderMangler+" sekunder";
    if(this._xscale==100){
        this.onEnterFrame=false;
        this._visible=false;
    }
}
function startLoad() {
    //loadFilmen
    loadMovie("film/filmen.swf", host);
    startTid = getTimer();
    loadBaren._xscale=1;
    loadBaren.onEnterFrame = loadStatus;
}
Avatar billede nicolai_johannesen Nybegynder
22. oktober 2004 - 15:16 #4
Det er lidt svært for mig, så har måske ik formuleret mig så præcis, da jeg er nybegynder i Flash.

Det jeg godt kunne tænke mig er bare at måle tiden på den eksterne video.swf, som j loader ind. Og så skal den der loadbar blandes udenom. Håber du forstår ... ?!
Avatar billede rohaje Nybegynder
22. oktober 2004 - 19:49 #5
// sekunder er
sekunderIAlt =head._totalframes/frameRate;
// frameRate skal sættes til den frameRate du har i din flashFilm
// f.eks
//frameRate=30;
minutter=Math.floor(sekunderIAlt/60);
sekunder=Math.round(sekunderIAlt-(minutter*60));
Avatar billede showoff Nybegynder
25. oktober 2004 - 11:48 #6
Her er en lidt simplere version. Blot lav et tekstfelt som hedder timeField på scenen. Lav så et tomt mc, og indlæg denne action på:

    this.tidSek = Math.floor(_root.host._currentframe/25);
    this.tidMin = Math.floor(this.tidSek/60);
    this.visSek = this.tidSek - (this.tidMin*60);
   
    if(this.visSek < 10){
    _root.timeField.text = this.tidMin+":0"+this.visSek;
    }
        if(this.visSek > 9){
    _root.timeField.text = this.tidMin+":"+this.visSek;
    }
Avatar billede rohaje Nybegynder
25. oktober 2004 - 12:10 #7
if(this.visSek < 10){
    _root.timeField.text = this.tidMin+":0"+this.visSek;
    }else{
          _root.timeField.text = this.tidMin+":"+this.visSek;
    }
Avatar billede nicolai_johannesen Nybegynder
25. oktober 2004 - 12:24 #8
Hej tak for svarene og tiden Rohaje og ShowOff! Smid et svar!
Jeg fik Showoff's kode til at virke, som det skal! Håber ikke jeg fik ledt dig (rohaje) på vildspor med mit indviklede spørgsmål! Med venlig hilsen Nicolai
Avatar billede rohaje Nybegynder
25. oktober 2004 - 13:48 #9
Jeg kom lidt på vildspor, først trode jeg det var load-tiden, så total-længden, men det var vist ligeså meget min egen skyld :)

gi, bare point'sne til showoff
Avatar billede showoff Nybegynder
25. oktober 2004 - 13:52 #10
tak skal du have, også tak til rohaje for at simplificere min kode yderligere.....naturligvis skal der blot bruges else....
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

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