2009-08-04 4 views
0

Normalerweise würden Sie, wenn Sie ein Bild von einer URL geladen wurden wie folgt vorgehen:Wie bekomme ich die Größe eines eingebetteten Bildes/swf?

m_image = new Image(); 
m_image.addEventListener(Event.COMPLETE, image_completeHandler, false, 0, true); 
m_image.source = "http://www.example.com/image.jpg"; 

private function image_completeHandler(event:Event):void 
{ 
    // Image content has now loaded, we need to wait for it to validate it's size 
    m_image.addEventListener(FlexEvent.UPDATE_COMPLETE, image_updateCompleteHandler, false, 0, true); 
} 

private function image_updateCompleteHandler(event:FlexEvent):void 
{ 
    // Do stuff with width/height 
} 

Aber, wenn Sie die Quelle auf eine eingebettete Bildklasse gesetzt, die komplette Veranstaltung nicht zu schießen erscheint. Also meine Frage ist, wie kann man die Breite/Höhe eines eingebetteten Bildes/swf bekommen?

Antwort

2

Die instatiation eines eingebetteten Asset syncronous ist (ich glaube, die einzige Ausnahme Loader.loadBytes ist), um so schnell wie Sie es tun können Sie alle seine Eigenschaften zugreifen:

image = new EmbeddedImage(); 
trace(image.width, image.height); 
+0

Dies zeigt an, dass die Lade isn 't synchron auch beim Einbetten: http://livedocs.adobe.com/flex/3/langref/mx/core/MovieClipLoaderAsset.html#event:complete –

+0

AFAIK, Sie müssen MovieClipLoaderAsset nicht für eingebettete Assets verwenden. .. – Cay