博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对StageWebView捕获位图时空白
阅读量:5322 次
发布时间:2019-06-14

本文共 2719 字,大约阅读时间需要 9 分钟。

如果你想对StageWebView捕获位图,可以参考如下例子,代码参考自:

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="Google";             textGoogle.x=300;             textGoogle.y=-80;                     addChild(textGoogle);             textFacebook.htmlText="Facebook";             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); }

 

 

转载于:https://www.cnblogs.com/iwhk/archive/2013/05/29/3106568.html

你可能感兴趣的文章
AngularJS学习篇(十三)
查看>>
Tableau 学习资料
查看>>
中断和异常
查看>>
lucene 全文检索工具的介绍
查看>>
C# MD5-16位加密实例,32位加密实例
查看>>
无线点餐系统初步构思
查看>>
AJAX
查看>>
前端之CSS
查看>>
List注意点【修改】
查看>>
sqoop导入导出对mysql再带数据库test能跑通用户自己建立的数据库则不行
查看>>
拓扑排序的原理及其实现
查看>>
对StageWebView捕获位图时空白
查看>>
Provison Profile管理及存放路径
查看>>
shop--8.店铺列表展示--前端开发
查看>>
转:Can not issue data manipulation statements with executeQuery()错误解决
查看>>
详解C#委托,事件与回调函数(转)
查看>>
744. Find Smallest Letter Greater Than Target
查看>>
Android 发展思路
查看>>
Sharepoint 自定义字段
查看>>
MySQL 触发器简单实例
查看>>