Avatar billede Slettet bruger
20. marts 2013 - 12:19

Nedarvning og asynkrone kald

Hej eksperter.

Jeg arbejder med Flash Media Server, hvor jeg transmitterer live-video, men har et OOP-spørgsmål. Projektet består af 5 kameraer, 1 monitor og 1 live-vindue samt et editor-vindue, der instantiates under Camera-klassen.

Jeg har en række klasser, hvor f.eks. klassen Camera nedarver Stream.
I Stream sker initialiseringen af netStream og netConnections og det meste virker efter hensigten.

Imidlertid har jeg følgende metode i Stream og den bliver kaldt, når forbindelsen til server og channel er oprettet:
protected function netstreamStatus(e:NetStatusEvent):void {
    if (e.info.code == "NetStream.Buffer.Full") {
        if (!_channelConnected) {
            _channelConnected = true;
            trace("Vi er i movieclip "+this);
            trace(e.currentTarget);
            MovieClip(this).stream_lv.attachNetStream(_ns);
        }
    }
}

Som det ses, forbindes _ns med videoelementet "stream_lv" når der er forbindelse.
Imidlertid har jeg et separat movieclip (som har klassen Editor. Editor nedarver MovieClip men includer Stream-klassen) som i det store hele skal kunne det samme, lige bortset fra at videovinduet nu ikke hedder "stream_lv" men "editor_lv".
Herudover ønsker jeg at editoren skal opføre sig lidt anderledes, da den ikke skal vise en live-stream, men tage fat i den fil, der i øjeblikket optages på serveren og afspille den fra 00:00:00

Min umiddelbare tanke var at placere netstreamStatus i den klasse, der tilhører hhv. kamera og editor og så referere direkte til de respektive videovinduer dér - men hvis jeg gør det, kan Stream vel næppe nå dem, da f.eks. Camera-klassen nedarver Stream og ikke omvendt.

En anden løsning var at overføre et "target" under initialiseringen, således at attachNetStream-kommandoen blev sat, dynamisk. Det giver ingen fejl, men videoen vises ikke i editor-vinduet og selvom det måske kan komme til at virke, synes jeg at det er noget rod at gøre det på den måde.


DET STORE SPØRGSMÅL ER DERFOR: Hvor skal jeg generelt lægge metoder som denne? Stream-klassen forventer jo at metoden ligger i samme klasse (eller i en overordnet) og kan ikke nå metoder i Camera-klassen som jo nedarver Stream.
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