2012-02-16 28 views

回答

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()); 
     } 
    } 
} 
+0

+1不知道我是如何错过 – Taurayi 2012-02-16 14:02:08

+0

当我下班回家时,我会尝试这种方法。谢谢! – Afra 2012-02-16 15:17:42

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

相关问题