Вот моя проблема. У меня есть оконное приложение во Flash Builder с некоторым кодом, а затем с изображением.
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:flexlib="http://code.google.com/p/flexlib/" preinitialize="loadImage()">
<fx:Script><![CDATA[
import flash.display.BitmapData;
import flash.utils.ByteArray;
import mx.controls.Image;
import mx.core.UIComponent;
import mx.graphics.codec.JPEGEncoder;
import mx.utils.Base64Encoder;
private var image:Bitmap;
private var base64image:String="";
private var sleepInt:int;
private function loadImage():void
{
var loader:Loader = new Loader;
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
loader.load(new URLRequest("mypic.jpg"));
trace("started loading");
}
private function getimg():String
{
trace("flexlib accessing image ", base64image);
return base64image;
}
private function imageLoaded(event:Event):void
{
image = new Bitmap(event.target.content.bitmapData);
base64image = getBase64FromComponent(image);
trace("image converted");
}
]]></fx:Script>
<flexlib:Base64Image value="{getimg()}"/>
</s:WindowedApplication>
Тег flexlib должен отображать изображение из строки. Я хочу загрузить изображение в код ActionScript, преобразовать его в строку, а затем нарисовать его. Однако, как только приложение запускается, оно пытается отобразить строку, которая все еще пуста.
Трассировка такая, по какой-то причине getimg () вызывается дважды:
доступ к изображению flexlib
начал загружаться
flexlib доступ к изображению
преобразованное изображение
Как видите, изображение не преобразуется до тех пор, пока flexlib не попытается его нарисовать. Решением было бы заставить компонент flexlib ждать события imageLoaded. Как я могу это сделать?
Спасибо, что ответили, однако событие applicationComplete вызывается после события preinitialize и, таким образом, только ухудшает ситуацию:
flexlib accessing image
flexlib accessing image
started loading
image converted