Avatar billede kalleballe Nybegynder
14. maj 2007 - 12:43 Der er 2 kommentarer og
1 løsning

oop syntaks problem

Hej, - jeg har følgende kode:

var flv_array:Array = new Array("crashflex_Medium.flv", "flux24.flv");

var loadingVideoNum:Number = 0;
var playingVideoNum:Number = 0;
var totalFLVs:Number = flv_array.length;
vidPlayer.contentPath  = flv_array[playingVideoNum];
cp.text = vidcomp.contentPath;

function finishedLoading(vid:Object):Void
{
    if (loadingVideoNum < totalFLVs)
    {
        loadingVideoNum++;
        vidPlayer.activeVideoPlayerIndex = loadingVideoNum;
        vidPlayer.load(flv_array[loadingVideoNum]);
    }
}
vidPlayer.addEventListener("ready", finishedLoading);

function finishedPlaying(vid:Object):Void
{
    playingVideoNum ++;
    playingVideoNum %= totalFLVs;
   
    vidPlayer.activeVideoPlayerIndex = playingVideoNum;
    vidPlayer.visibleVideoPlayerIndex = playingVideoNum;
    vidPlayer.play();
}
vidPlayer.addEventListener("complete", finishedPlaying);


Jeg vil så gerne lave koden i en klasse i stedet, - men hvordan håndtere jeg eventlistener kald/funktion i klassen rigtigt?

Skal jeg lave en event klasse som jeg så kalder fra min video klasse eller hvad?

vh

KalleBalle
Avatar billede mat Nybegynder
15. maj 2007 - 11:35 #1
Noget i denne stil;

import mx.utils.Delegate;
import mx.video.FLVPlayback;

class VideoPlayer2 {
   
    private var vidPlayer:FLVPlayback;
    private var cp:TextField;
    private var flv_array:Array;
    private var loadingVideoNum:Number = 0;
    private var playingVideoNum:Number = 0;
    private var totalFLVs:Number;
   
    public function VideoPlayer2(p_video:FLVPlayback) {
        vidPlayer = p_video;
        flv_array = new Array("crashflex_Medium.flv", "flux24.flv");
        totalFLVs = flv_array.length;
        vidPlayer.contentPath  = flv_array[playingVideoNum];
        addListeners ();
    }
    private function addListeners ():Void {
        vidPlayer.addEventListener("ready", Delegate.create(this, finishedLoading));
        vidPlayer.addEventListener("complete", Delegate.create(this, finishedPlaying));
    }
    private function finishedLoading(vid:Object):Void {
        if (loadingVideoNum < totalFLVs)
        {
        loadingVideoNum++;
        vidPlayer.activeVideoPlayerIndex = loadingVideoNum;
        vidPlayer.load(flv_array[loadingVideoNum]);
        }
    }
    private function finishedPlaying(vid:Object):Void {
        playingVideoNum ++;
        playingVideoNum %= totalFLVs;
     
        vidPlayer.activeVideoPlayerIndex = playingVideoNum;
        vidPlayer.visibleVideoPlayerIndex = playingVideoNum;
        vidPlayer.play();
    }
}

Så giver du bare komponentens instancenavn til constructoren (og tilføjer evt dit tekstfelt som parameter til klassens constructor, hvis du har lyst (eller bare lave en "UI"-klasse, der sørger for visning af den slags)).

mvh mat
Avatar billede kalleballe Nybegynder
15. maj 2007 - 12:00 #2
Det virker hvis jeg ikke har en konstruktor (VideoPlayer2) men bare en metode a la getVideo, - og tak, - det var netop syntaksen med Delegate.create(this.finishedLoding) jeg ikke havde styr på.

Mange tak for hjælpen
vh

KalleBalle
Avatar billede mat Nybegynder
15. maj 2007 - 13:11 #3
aight
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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