Vraag over FLV's afspelen in 1 video instance

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • m2xum2xu
  • Registratie: Oktober 2005
  • Laatst online: 03-09-2021
Hoi iedereen, het project dat ik aan het maken ben is af, en werkt. Ondanks dat ik denk dat ik alles nogal omslachtig aanstuur, maargoed, het werkt

Ik heb nog 1 probleem waar ik mee zit.

Ik stuur verschillende video's aan, sommige via een functie die random kiest, sommige 'on rails'. Omdat ik bij elke 'fase' verschillende functies aanroep, heb ik er voor gekozen bij elke nieuwe video die af moet spelen, opnieuw de volgende code te plaatsen.

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function speel_film_1() {
    var nc:NetConnection=new NetConnection();
    nc.connect(null);
    
    var ns:NetStream=new NetStream(nc);
    
    ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR,errorHandler);
    ns.play(filmpje);
    
    function errorHandler(evt:AsyncErrorEvent):void {
    }
    
    var vid:Video=new Video(1280, 720);
    vid.attachNetStream(ns);
    addChild(vid);
    
    ns.addEventListener(NetStatusEvent.NET_STATUS,statusHandler);


Deze code werkt overal, het ding is alleen dat elke keer dat een nieuwe video afspeelt, de oude film gewoon stopt, en er een nieuwe videoplayer over deze heen komt die begint te spelen.
Hierdoor raakt op den duur het geheugen vol, omdat hij alle video's open laat. Wat kan ik hier aan doen? Oftewel, hoe zorg ik dat alle video's in dezelfde speler afspelen, of wanneer ze toch ieder in een nieuwe speler gaan spelen, de oude speler gesloten wordt.

Alvast bedankt!

[ Voor 1% gewijzigd door MueR op 24-04-2010 17:09 ]


Acties:
  • 0 Henk 'm!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 17:16

Dido

heforshe

Je player embedden in een class die steeds dezelfde instance teruggeeft (en als die instance er nog niet is, die instance aanmaakt)?
Wikipedia: Singleton pattern

Wat betekent mijn avatar?


Acties:
  • 0 Henk 'm!

  • m2xum2xu
  • Registratie: Oktober 2005
  • Laatst online: 03-09-2021
Hey Dido, bedankt voor je reactie. Ik denk dat ik er nog bij had moeten zetten dat ik een beginnende flasher ben:) Mijn script heb ik gemaakt met behulp van een stukje code van een leraar van me, wat ik zelf verder heb uitgebouwd. Ik weet dus even niet zo goed wat je bedoeld. Ik heb even gegoogled op singleton, en kwam o.a. hier op uit: flashfocus Maar ook dit verheldert het nog niet zo voor mij.

Wat ik zojuist zelf nog heb geprobeerd is:
case "NetStream.Play.Stop" :
removeChild(vid);
vid = null;

Dit lijkt te werken: geheugen loopt niet op, maar tussen het opnieuw openen van video's zitten enkele milliseconden, waardoor je dus een zwarte (background is zwart) flits ziet tussen het openen van de video's, wat niet mag, omdat het voor een interactieve installatie is die naadloos moet lopen.

edit: lijkt NIET te werken, geheugen loopt wel op

[ Voor 3% gewijzigd door m2xum2xu op 24-04-2010 14:09 ]


Acties:
  • 0 Henk 'm!

  • Tha_TE
  • Registratie: Mei 2002
  • Laatst online: 03-09 09:26
Heb je de eventListeners wel weggehaald, anders moet je er een weak reference van maken, zodat de garbage collector het mag opruimen.

Acties:
  • 0 Henk 'm!

  • m2xum2xu
  • Registratie: Oktober 2005
  • Laatst online: 03-09-2021
Bedankt voor de info over codes posten.
Voor de rest is mn probleem nu opgelost. Ik wist niet dat voor "removeEventListener" de prefix "ns." moest staan. Bedankt voor alle hulp.

[ Voor 179% gewijzigd door m2xum2xu op 26-04-2010 20:57 ]


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 20:57

MueR

Admin Tweakers Discord

is niet lief

Hoe code posten werkt lees je in Hoe post je code? / Hoe gebruik je de code tag?. Je mag echter niet je complete script even dumpen. Ik zie graag alleen relevante code. Ik heb deze lap even weggehaald.

Anyone who gets in between me and my morning coffee should be insecure.

Pagina: 1