是否可以使用OpenLaszlo获取html标签内容的屏幕截图?

时间:2012-10-19 11:48:51

标签: screenshot openlaszlo lzx

我正在创建一个openlaszlo应用程序,其中会出现一个html标记,并且我有一些可在swf中拖动的组件。我想在html上拖动这些组件。这是不可能的。

所以我想的是截取html内容的截图,并在我需要拖动时将其替换为实际的html内容。

理论上这应该是可能的,并且我可以灵活地验证自己。我想在Openlaszlo做同样的事情。但我没有得到任何线索

到目前为止,我已经尝试过这样的事了 我收到一个错误,即html标签不是IBitmapDrawable的对象

<canvas width="800" height="600" bgcolor="white" debug="true">
<script when="immediate"><![CDATA[
class MagUtils {
#passthrough (toplevel: true) {
import flash.display.DisplayObject;
import flash.geom.Rectangle;
import flash.geom.Matrix;
import flash.geom.ColorTransform;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.filters.*;
import flash.events.MouseEvent;
import mx.graphics.ImageSnapshot;
import flash.utils.ByteArray;
import flash.display.IBitmapDrawable;
}#

var temp:lz.view;
var colorTransform:ColorTransform;
var rect:Rectangle;


public function snap (m:IBitmapDrawable, t:lz.view):void {

temp = t;
var temp_mc = temp.sprite; // getMCRef();
var mainView_mc = main.sprite; // getMCRef();
var scale = 1;
var x;
var y;
var w;
var h;
  var imageSnap:ImageSnapshot = ImageSnapshot.captureImage(m);
  var imageByteArray:ByteArray = imageSnap.data;
colorTransform = new flash.geom.ColorTransform();
rect = new flash.geom.Rectangle(0, 0, temp.width, temp.height);

var bitmap:BitmapData = new flash.display.BitmapData(w, h, false);
 bitmap.setPixels(rect, imageByteArray);
var bm:Bitmap = new Bitmap(bitmap);
temp.sprite.addChild (bm);
bitmap = null;
}
}
lz.MagUtils = new MagUtils();
]]>

</script>


<button name="magnifier" text="magnifyingtool" >
<handler name="onclick">
lz.MagUtils.snap(canvas.main.ht,canvas.temp);
</handler>
</button>

<view name="main" x="5" y="15" width="200" height="200" bgcolor="yellow">
    <html name="ht" width="200" height="200" src="http:hello.html"/>
</view>
<view id="temp" name="temp" x="5" y="300" visible="true" width="200" height="200" bgcolor="gray">
</view>


</canvas> 

HTML内容

<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML>
   <HEAD>
      <TITLE>
         A Small Hello
      </TITLE>
   </HEAD>
<BODY>
   <H1>Hi</H1>
   <P>Test Page</P>
</BODY>
</HTML>

1 个答案:

答案 0 :(得分:1)

无法在Flash中截取不受Flash显示列表管理的元素的屏幕截图,其中包括位于浏览器中SWF影片下方的iFrame内容。这似乎就是你想要做的事情。

如果要将可视对象从iFrame拖动到SWF电影区域,可能有一种方法是将HTML中的内容呈现为HTML5画布元素,提取位图数据并将其推送到要显示的SWF影片中在OpenLaszlo视图中。但这意味着您想要拖动的所有视觉元素都需要绘制到HTML5画布中。

以下示例使用Flash Player的过滤器功能将过滤器应用于HTML5 canvas元素中的图像: http://www.quasimondo.com/archives/000695.php

以下是此示例的相关文件的链接:

  1. 用于处理图片的HTML page embedding an invisible SWF
  2. JavaScript file具有将数据发送到SWF影片剪辑的功能。
  3. ActionScript class处理从JavaScript发送的图像数据,并将处理后的数据传回HTML页面。
  4. 但我不确定iFrame中的所有内容都可以呈现为canvas元素。

相关问题