当我想渲染图片时,我向服务器发送一个请求,并提供相关图片进行渲染。奇怪的是它是如何返回的:
<img src="https://blargh.com/displayTemplate?templateid=template1">
该链接应该是图像数据。
使用此功能,如何将其转换为可以向用户显示的图像?这是一个Facebook应用程序,我不能只嵌入HTML。它需要在我的AS应用程序中显示为Bitmap或Sprite或其他任何东西。尝试将其转换为Bitmap或BitmapData失败了......
我能提供的唯一其他信息是,我的templateLoader
是Loader
,其.data
应该包含HTML。
答案 0 :(得分:5)
这样的事情:
var data:String = '<img src="https://blargh.com/displayTemplate?templateid=template1">';
// grab the src attribute
var url:Array = data.match(/<img src=\"(.*?)\">/);
if (url.length > 1){
var loader:Loader = new Loader();
loader.load(new URLRequest(url[1]));
addChild(loader);
}
答案 1 :(得分:3)
使用e4x。我不确定你是否收到字符串或服务调用的结果格式已经是XML,但如果它是一个字符串,你会做这样的事情:
var imgXML:XML = XML(yourString);//yourString contains <img src="https://blargh.com/displayTemplate?templateid=template1">
link = imgXML.@src;
然后,如果你只使用AS,请查看Zevan发布的有关如何使用Loader的代码,或者将其用作Flex中Image控件的源代码。
答案 2 :(得分:1)
看起来服务器正在为您提供一个链接,该链接根据您传递给服务器的GET数据动态查找图像(?templateid = template1)。太糟糕了,你没有粘贴在真正的链接中,这样就可以证明这个理论。获取真实链接并复制出http://部分,将其输入浏览器,如果图像出现,则确实如此。
如果这是真的,那么您想从标记中提取链接。您可以使用正则表达式执行此操作,如下所示:
/ \?) “(?)”(。*)/
如果您像上面提到的那样针对完整标记运行该正则表达式,那么捕获组2将仅包含HTTP链接。然后,您可以使用Loader对象来获取图像,这样您实际上就可以下载并呈现二进制图像数据,而不是嵌入HTML。
如果您打算在AS3中使用Regex,那么您必须拥有grantskinner.com的http://gskinner.com/RegExr/desktop/的RegExr工具。
另外,为了从捕获组2获取数据,我们这样做:
var imageTag:String = '<img src="https://blargh.com/displayTemplate?templateid=template1">'
var myHttpRegex:Regex = /\<img(.*?)"(.*?)"(.*)/;
var result:Object;
result = myHttpRegex.exec(imageTag);
if(result != null) {
var imgUrl:String = result[1];
}
代码未经测试,但概念就在那里。