Panoramen Performance sinkt

Fragen und Antworten zu Pano2VR in deutscher Sprache
Post Reply
mike
Posts: 4
Joined: Tue Aug 19, 2008 11:23 am

Hallo,

ich habe das Problem, dass die Performance der Panoramen sinkt und sie immer langsamer werden, je öfter sie angeklickt wurden. Wird das vr Movieclip immer "voller"? Woran kann das liegen? Vielen Dank im Voraus!

Code: Select all

//FLASH 9, AS3:
import flash.display.*;
import flash.net.URLRequest;
import flash.events.Event;

loadPanorama("01-002m.swf",1);

/////////////////////////////////////////
// Load Panorama

function loadPanorama(swffile:String,id) {
	var loader:Loader;
	loader = new Loader();
	
	var url:String;
	url=swffile;
	var urlReq:URLRequest = new URLRequest(url);
	var vr:MovieClip;
	
	function finished_loading(e:Event) {		
	}
	
	function initHandler(event:Event):void {
		vr = MovieClip(loader.content);
		vr.pano.setWindowSize(930,465);
		vr.pano.setWindowPos(15,40);
	}
	
	loader.contentLoaderInfo.addEventListener(flash.events.Event.COMPLETE, finished_loading);
	loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler);
	loader.load(urlReq);
	addChild(loader);
}



/////////////////////////////////////////
// Thumbs

panel.btn01.addEventListener(MouseEvent.CLICK, click01);
panel.btn02.addEventListener(MouseEvent.CLICK, click02);
panel.btn03.addEventListener(MouseEvent.CLICK, click03);

function click01(evt:MouseEvent):void {
	loadPanorama("01-002m.swf",1);
}

function click02(evt:MouseEvent):void {
     loadPanorama("01-015m.swf",2);
}

function click03(evt:MouseEvent):void {
     loadPanorama("01-017m.swf",3);
}
User avatar
thomas
Chief Gnome
Posts: 2611
Joined: Fri Sep 01, 2006 3:56 pm
Location: Vienna, Austria
Contact:

Werden die Panoramen auch wieder freigegeben? Falls nur dieser code verwendet wird werde immer mehr Panos gleichzeitig geladen...
MfG, Thomas
mike
Posts: 4
Joined: Tue Aug 19, 2008 11:23 am

Aha, danke! Dann hat sich der Verdacht bestätigt. Ich verwende nur diesen Code. Wie kann ich verhindern dass immer mehr Panos gleichzeitig geladen werden?
User avatar
thomas
Chief Gnome
Posts: 2611
Joined: Fri Sep 01, 2006 3:56 pm
Location: Vienna, Austria
Contact:

Steht auf http://gardengnomesoftware.com/wiki/Pano2VR_-_Flash_API . Einfach z.B. in loadPanorama mit

Code: Select all

if (vr) {
  vr.pano.cleanup();
  removeChild(vr);
}
das alte Pano entfernen.
MfG, Thomas
Seimen
Posts: 4
Joined: Tue Sep 16, 2008 1:33 pm

Hi,

wenn ich versuche, das Panorama über obigen code zu entfernen kommt folgende Fehlermeldung:

Code: Select all

ArgumentError: Error #2025: Das angegebene DisplayObject muss ein untergeordnetes Element des Aufrufers sein.
	at flash.display::DisplayObjectContainer/removeChild()
	at removeTest_fla::MainTimeline/test2()
	at Function/http://adobe.com/AS3/2006/builtin::apply()
	at <anonymous>()
	at SetIntervalTimer/onTimer()
	at flash.utils::Timer/_timerDispatch()
	at flash.utils::Timer/tick()
Was mache ich falsch ? :(


******* EDIT ********

habe das Problem gefunden: Es muss "removeChild(loader);" heißen :)

Grüße
Seimen
Seimen
Posts: 4
Joined: Tue Sep 16, 2008 1:33 pm

Aller dings löst das das Problem nicht :(

wenn ich viel zwischen den Panoramen wechsle wird der speicher immer voller und die anwendung immer langsamer!
liegt das daran, dass ich den "loader" und nicht "vr" remove ?

Grüße
Seimen
User avatar
thomas
Chief Gnome
Posts: 2611
Joined: Fri Sep 01, 2006 3:56 pm
Location: Vienna, Austria
Contact:

Wahrscheinlich wird vr.pano.cleanup(); nicht aufgerufen, und dadurch bleibt das Pano im Speicher. Ich weis aber leider auch keine Lösung....
MfG, Thomas
Seimen
Posts: 4
Joined: Tue Sep 16, 2008 1:33 pm

Doch, "vr.pano.cleanup();" wird ausgeführt. Denn wenn ich die beiden Befehle cleanup und removeChild etwas zeitversetzt aufrufe, bleibt das Panorama stehen, was wohl daran liegt, das der onEnterFrame-Listener entfernt wird.

Hast Du das schonmal so versucht und hat es funktioniert ? Wurde das Panorama komplett aus dem Speicher geworfen ?
Denn bei mir funktioniert ja schon der Befehl "removeChild(vr);" nicht. Vielleicht liegt das daran, dass es vorher garkein addChild(vr) gibt.

Ich steige gerade von AS2 auf AS3 um, und mit verwirren die DisplayList und der Garbage Collector, etc. noch etwas :?:

Mich interessiert vorallem ob es generell funktioniert und nur ich einen Fehler mache oder ob es an der panorama.swf liegt.

Grüße
Seimen
User avatar
thomas
Chief Gnome
Posts: 2611
Joined: Fri Sep 01, 2006 3:56 pm
Location: Vienna, Austria
Contact:

Seimen wrote:Hast Du das schonmal so versucht und hat es funktioniert ? Wurde das Panorama komplett aus dem Speicher geworfen ?
Ich hab es mal getestet und da hat es geklappt.
MfG, Thomas
Seimen
Posts: 4
Joined: Tue Sep 16, 2008 1:33 pm

Kannst Du vielleicht die fla oder das genaue Script posten? Weil wenn ich es so wie in der API beschrieben mache, funktioniert es leider nicht.

Vielen Dank schon mal im Voraus!!
Grüße Seimen
Post Reply