Domů > Adobe Flash > Chyba v Internet Exploreru – stageWidth = 0 a stageHeight = 0

Chyba v Internet Exploreru – stageWidth = 0 a stageHeight = 0

22.02.2009

Včera jsem se na chvíli poněkud zaseknul na super chybě v Internet Exploreru, konrétně veri pro Windows Vista – IE7 7.0.6001.1800. Projevuje se tak, že Flashový objekt má po načtení celého obsahu nulovou výšku a šířku i když samozřejmě tyto velikosti nulové nemá.

Chyba se projevovala hned po načtení Flashe, když už byl zavolán konstruktor třídy dokumentu. Hned při inicializaci jsem pozicoval objekty v rámci flashe a vzhledem k tomu, že jak
stage.stageWidth tak
stage.stageHeigth vracela hodnotu 0, tak se opravdu špatně pozicovalo v dokumentu nulové velikosti. :)

Řešení je jednoduché a na snadě, prostě počkat.

Viz

package {
	import flash.display.MovieClip;
	import flash.utils.Timer;
	import flash.events.TimerEvent;
 
	class Trida extends MovieClip {
 
		private var inicTimer:Timer;
 
		public function Trida() {
 
			super();
			if (stage.stageWidth == 0 || stage.stageHeight == 0) {
				// zjistili jsme chybu, velikost nemuze byt 0
				// vyrobime timer objekt
				inicTimer = new Timer(100, 1);
				// navazeme na listener
				inicTimer.addEventListener(TimerEvent.TIMER, runInicApp);
				// pustime
		                inicTimer.start();
            		} else {
				// pokud je vse v poradku, rovnou naincializueje aplikaci
		                inicApp();
            		}
	        }
 
        	private function runInicApp(e) {
			// spustime opozdenou inicializaci
            		inicApp();
        	}
 
        	private function inicApp() {
			// vlastni inicializace aplikace, ted uz je vse v poradku
		}
	}
}

Na závěr bych chtěl poděkovat Billu Gatesovi a popřát mu, at shnije v pekle :)
Snad tímhle někomu uštřím bezesnou noc.

Martin Boháč Adobe Flash

Komentáře jsou uzavřeny.