我在Flex中有一个成功加载页面的HTML控件。 有没有办法可以从HTML控件中提取或获取所有图像并显示它们?如何从Flex中的HTML控件获取所有图像?
1
A
回答
2
您实际上可以使用HTML文档DOM并询问所有img标签。这种方式更清洁。
一旦你得到了DOM,这是所有的标准,所以你可以检查HTML DOM documentation如果你不确定的东西。
下面是快速示例。我只是写onComplete函数,因为它会在Taurayi的例子中调用
var _imagesSrc:Array= [];
private function onComplete(e:Event):void
{
var htmlLoader:HTMLLoader = e.target as HTMLLoader;
var doc:* = htmlLoader.window.document; //use void (*) type for DOM objects
var imgTags:* = doc.getElementsByTagName("img");
if(imgTags)
{
for(var i:int=0;i<imgTags.length;i++)
{
var src:* = imgTags[i].getAttribute("src"); //not sure about return type here, could also be a String
if(src)
_imagesSrc.push(src.toString());
}
}
}
2
那么一个想法是,你加载的HTML页面使用HTMLLoader
,然后当它已经加载你得到的来源。然后使用解析器或正则表达式,可以提取<img />
标记的src
属性的值。 src
属性的值将成为您加载页面上图像的URL。然后使用Loader
和上述网址,您可以将它们加载到您的Flash应用程序中。
下面是一个例子:
Main.as(文档类):
package
{
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.display.Sprite;
import flash.events.Event;
import flash.html.HTMLLoader;
import flash.net.URLRequest;
public class Main extends Sprite
{
public function Main():void
{
var htmlLoader:HTMLLoader = new HTMLLoader();
htmlLoader.addEventListener(Event.COMPLETE, onComplete);
htmlLoader.width = stage.stageWidth;
htmlLoader.height = stage.stageHeight;
htmlLoader.load(new URLRequest("http://www.wampserver.com/"));
}// end function
private function onComplete(e:Event):void
{
var htmlLoader:HTMLLoader = e.target as HTMLLoader;
var body:String = htmlLoader.window.document.body.outerHTML;
var imgTags:Array = getImgTags(body);
var src:String = getSrc(imgTags[1]);
trace(src); // output: http://www.wampserver.com/wp-content/themes/wampserver/img/home-title.png
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderComplete);
loader.load(new URLRequest(src));
}// end function
private function onLoaderComplete(e:Event):void
{
var loader:Loader = (e.target as LoaderInfo).loader;
addChild(loader);
}// end function
private function getImgTags(source:String):Array
{
return source.match(/(<img.*?>)/g);
}// end function
private function getSrc(imgTag:String):String
{
return imgTag.match(/src="(.*?)"/)[1];
}// end function
}// end class
}// end package
请记住,这只是一个想法,也有一些明显的缺陷。
+0
看起来不错:)谢谢!我将首先尝试DOM对象方法,看看它是否可行。 – Afra 2012-02-16 15:18:24
相关问题
- 1. 如果edittext有图像如何从edittext获取所有图像?
- 2. 如何从ftp文件夹中获取所有图像到NSArray
- 3. 如何从qrc文件中获取所有图像?
- 4. 如何获取HTML表格中的所有<asp:Label>控件?
- 5. 如何从UIImage对象中获取所有图像像素
- 6. 从URL中获取所有图像
- 7. 如何从特定文件夹(iPhone)获取所有图像?
- 8. 如何从Flex中的本地图像获取BitmapData?
- 9. 如何从任何网页获取所有图像(在iPhone中)
- 10. 如何使用C++获取文件夹中的所有图像
- 11. 如何使用CakePHP获取文件夹中的所有图像
- 12. 如何从HTML文件夹中获取未知图像?
- 13. 如何使用Ko3从HTML的一部分获取所有图像标签?
- 14. 在flex中,如何声明一个控件以获取所有可用宽度
- 15. 从HTML文件获取jpg图像
- 16. 如何从图库中获取所选图像的路径
- 17. 从WebBrowser控件获取所有文本
- 18. 从MasterPage获取所有控件ChildPage
- 19. 从URL或从HTML获取所有图像命名并保存在文件夹
- 20. 从图像控件获取BitmapSource
- 21. Yii2:从控制器的html中获取图像ID
- 22. Flex:如何获取图像的图像大小?
- 23. 从php中的任何url获取所有图像?
- 24. 获取图像中的所有颜色
- 25. 如何使用Android从.ppt文件中提取所有图像?
- 26. 如何从目标C中的JSON中获取HTML图像?
- 27. 如何使用MATLAB获取文件夹内的所有图像?
- 28. 获取图像的所有像素[Wand]
- 29. 如何从手机上的所有图像获取图像路径
- 30. 如何从控制器内的部分视图中获取html
+1不知道我是如何错过 – Taurayi 2012-02-16 14:02:08
当我下班回家时,我会尝试这种方法。谢谢! – Afra 2012-02-16 15:17:42