这是我的问题。我在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事件。我怎么能这样做?
感谢您的回复,但是在preinitialize事件之后调用了applicationComplete事件,因此只会让事情变得更糟:
flexlib accessing image
flexlib accessing image
started loading
image converted
答案 0 :(得分:0)
在WindowedApplication标签中,将preinitialize =“loadImage()”更改为applicationComplete =“loadImage()”