PDA

Volledige versie bekijken : Probleem met video in externe swf


Freshface
%Europe/Berlin %656 %2008, 15:45
Beste

In mijn hoofd swf laad ik een andere swf in die op zijn beurt externe video inlaad.

In mijn hoofd swf laad ik de swf zo in:


var loader:Loader = new Loader();
loader.load (new URLRequest(itemToLoad));
loader.contentLoaderInfo.addEventListener(Event.OP EN,showPreloader);
loader.contentLoaderInfo.addEventListener(Event.CO MPLETE,showLoadResult);


function showPreloader(evt:Event):void {
mc_site.mc_preloader.alpha = 1;
}



function showLoadResult(e:Event):void
{
mc_site.mc_loader.addChild (loader);
}



Mijn video word zo ingeladen:

var video:Video = new Video();
video.width = 535;
video.height = 300;
video.y = 46;
video.x = 1;
addChild (video);

var _st:SoundTransform= new SoundTransform;


var nc:NetConnection = new NetConnection();
nc.connect (null);

var _ns:NetStream = new NetStream(nc);
_ns.client = this;
_ns.addEventListener (NetStatusEvent.NET_STATUS,netStatusHandler);

_st.volume=1;
_ns.soundTransform=_st;

function onMetaData (info:Object):void
{
}

video.attachNetStream (_ns);
_ns.play ("video/vrijegeluiden.flv");

function netStatusHandler (event:NetStatusEvent):void
{
//trace(event.info.code);
}


Maar als ik een andere swf inlaad blijft mijn video verder spelen.
Als ik mijn loader of mijn movieclip mc_loader weggooi dan blijft hij ook verderspelen.

Hoe kan ik dat oplossen?

theFlashWizard
%Europe/Berlin %836 %2008, 20:04
Het netst lijkt het me om deze fimpjes swf's een document class mee te geven die een close method implementeerd. Deze kan dan het filmpje meteen stoppen.
Deze kan je dan aanroepen vanaf de class die de swf gebruikt.

Dit effect komt trouwens waarschijnlijk omdat zo'n object niet direct gecarbage collect wordt. Dit gebeurt onregelmatig, wanneer het geheugen opraakt.
Dit soort dingen, net zoals sound bijv. moet je eerst handmatig stoppen.

Freshface
%Europe/Berlin %840 %2008, 20:09
import flash.events.Event;

this.addEventListener(Event.REMOVED_FROM_STAGE,onR emovedFromStageHandler);

function onRemovedFromStageHandler(pEvent:Event):void{
_ns.close();
}



did the trick.