Ainsi la classe en jeu ici est SWFLoader (image étend SWFLoader). Si vous avez passé dans le ByteArray ou une URL, il ajoute l'écouteur approprié. Ce que vous avez fait est alimenté par un bitmap, qui est un objet d'affichage. Voici le code important chargement d'un bitmap dans une image:
else if (classOrString is DisplayObject)
{
contentHolder = child = DisplayObject(classOrString);
addChild(child);
contentLoaded();
}
ByteArray:
else if (byteArray)
{
loader = new FlexLoader();
contentHolder = child = loader;
addChild(child);
loader.contentLoaderInfo.addEventListener(
Event.COMPLETE, contentLoaderInfo_completeEventHandler);
loader.contentLoaderInfo.addEventListener(
Event.INIT, contentLoaderInfo_initEventHandler);
loader.contentLoaderInfo.addEventListener(
IOErrorEvent.IO_ERROR, contentLoaderInfo_ioErrorEventHandler);
loader.contentLoaderInfo.addEventListener(
Event.UNLOAD, contentLoaderInfo_unloadEventHandler);
// if loaderContext null, it will use default, which is AppDomain
// of child of Loader's context
loader.loadBytes(byteArray, loaderContext);
}
une url:
else if (url)
{
// Create an instance of the Flash Player Loader class to do all the work
loader = new FlexLoader();
contentHolder = child = loader;
// addChild needs to be called before load()
addChild(loader);
// Forward the events from the Flash Loader to anyone
// who has registered as an event listener on this Loader.
loader.contentLoaderInfo.addEventListener(
Event.COMPLETE, contentLoaderInfo_completeEventHandler);
loader.contentLoaderInfo.addEventListener(
HTTPStatusEvent.HTTP_STATUS, contentLoaderInfo_httpStatusEventHandler);
loader.contentLoaderInfo.addEventListener(
Event.INIT, contentLoaderInfo_initEventHandler);
loader.contentLoaderInfo.addEventListener(
IOErrorEvent.IO_ERROR, contentLoaderInfo_ioErrorEventHandler);
loader.contentLoaderInfo.addEventListener(
Event.OPEN, contentLoaderInfo_openEventHandler);
loader.contentLoaderInfo.addEventListener(
ProgressEvent.PROGRESS, contentLoaderInfo_progressEventHandler);
loader.contentLoaderInfo.addEventListener(
SecurityErrorEvent.SECURITY_ERROR, contentLoaderInfo_securityErrorEventHandler);
loader.contentLoaderInfo.addEventListener(
Event.UNLOAD, contentLoaderInfo_unloadEventHandler);
...[this goes on for awhile]
Ainsi, vous obtenez l'essentiel ici. Ne le convertissez pas en Bitmap et vous obtiendrez votre événement complet. Vous pouvez également ajouter ADDED_TO_STAGE à votre bitmap.
Merci pour votre réponse Joel. Je charge l'image à partir de FileReference.data ByteArray en utilisant FileReference.load, donc je n'ai pas d'autre choix que d'utiliser ByteArray. Cependant, j'ai écouté l'événement ADDED_TO_STAGE sur le bitmap à la place et cela a fonctionné comme un charme! Merci! –
vous pouvez utiliser le bitmapdata avec image.load et il déclenchera l'événement complet. Le lancer vers un bitmap est l'endroit où il l'ajoute simplement comme un enfant à la place. –
Vous êtes l'homme Joel! – infomaniac