我正在创建一个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>
答案 0 :(得分:1)
无法在Flash中截取不受Flash显示列表管理的元素的屏幕截图,其中包括位于浏览器中SWF影片下方的iFrame内容。这似乎就是你想要做的事情。
如果要将可视对象从iFrame拖动到SWF电影区域,可能有一种方法是将HTML中的内容呈现为HTML5画布元素,提取位图数据并将其推送到要显示的SWF影片中在OpenLaszlo视图中。但这意味着您想要拖动的所有视觉元素都需要绘制到HTML5画布中。
以下示例使用Flash Player的过滤器功能将过滤器应用于HTML5 canvas元素中的图像: http://www.quasimondo.com/archives/000695.php
以下是此示例的相关文件的链接:
但我不确定iFrame中的所有内容都可以呈现为canvas元素。