zoukankan      html  css  js  c++  java
  • 对StageWebView捕获位图时空白

    如果你想对StageWebView捕获位图,可以参考如下例子,代码参考自:http://help.adobe.com/en_US/as3/dev/WS901d38e593cd1bac3ef1d28412ac57b094b-8000.html

    package 
    { 
        import flash.display.Bitmap; 
        import flash.display.BitmapData; 
        import flash.display.Sprite; 
        import flash.events.*; 
        import flash.geom.Rectangle; 
        import flash.media.StageWebView; 
        import flash.net.*; 
        import flash.text.TextField; 
        public class stagewebview extends Sprite 
        { 
            public var webView:StageWebView=new StageWebView(); 
            public var textGoogle:TextField=new TextField(); 
            public var textFacebook:TextField=new TextField(); 
            public function stagewebview() 
            { 
                textGoogle.htmlText="<b>Google</b>"; 
                textGoogle.x=300; 
                textGoogle.y=-80;         
                addChild(textGoogle); 
                textFacebook.htmlText="<b>Facebook</b>"; 
                textFacebook.x=0; 
                textFacebook.y=-80; 
                addChild(textFacebook); 
                textGoogle.addEventListener(MouseEvent.CLICK,goGoogle); 
                textFacebook.addEventListener(MouseEvent.CLICK,goFaceBook); 
                webView.stage = this.stage; 
                webView.viewPort = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight); 
            } 
        public function goGoogle(e:Event):void 
            { 
                webView.loadURL("http://www.google.com"); 
                webView.stage = null; 
                webView.addEventListener(Event.COMPLETE,handleLoad); 
            } 
         
        public function goFaceBook(e:Event):void 
            { 
                webView.loadURL("http://www.baidu.com"); 
                webView.stage = null; 
                webView.addEventListener(Event.COMPLETE,handleLoad); 
            } 
        public function handleLoad(e:Event):void 
            { 
                var bitmapData:BitmapData = new BitmapData(webView.viewPort.width, webView.viewPort.height); 
                webView.drawViewPortToBitmapData(bitmapData); 
                var webViewBitmap:Bitmap=new Bitmap(bitmapData); 
                addChild(webViewBitmap); 
            } 
        } 
    }

     使用上述代码是可以实现捕获位图功能的。但如果想不用点击就直接初始化页面的,可以稍微修改如下。 

    ......
    webView.stage = this.stage; webView.viewPort = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight); //直接加载页面 webView.loadURL("http://www.baidu.com"); webView.stage = null;
    ......

     但修改后会出现文章标题所说的“捕获位图时空白”。至于为什么会出现这种情况,暂不清楚。我估计是StageWebView加载页面完成发送COMPLETE事件后,其实页面并未加载完成而导致捕获位图空白,因此采取延迟策略。这是无奈的解决方案,如果你遇到过这个问题并有更好的解决方案,请告诉我。

    public function handleLoad(e:Event):void 
    { 
       setTimeout(delayHandler,100);
    } 
            
    private function delayHandler():void
    {
       var bitmapData:BitmapData = new BitmapData(webView.viewPort.width, webView.viewPort.height); 
       webView.drawViewPortToBitmapData(bitmapData); 
       var webViewBitmap:Bitmap=new Bitmap(bitmapData); 
       addChild(webViewBitmap); 
    }
  • 相关阅读:
    基数排序
    希尔排序
    归并排序
    选择排序
    冒泡排序
    堆排序
    快速排序
    Python selenium 4种常用定位 id,class_name,text,xpath
    python selenium 用索引值定位
    python pycharm 建立新项目时使用上个项目所下载的第三方库方法
  • 原文地址:https://www.cnblogs.com/iwhk/p/3106568.html
Copyright © 2011-2022 走看看