2

htmlタグが存在するopenlaszloアプリケーションを作成していますが、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>
4

1 に答える 1

1

ブラウザの SWF ムービーの下に配置された iFrame コンテンツを含む、Flash 表示リストで管理されていない要素の Flash でスクリーンショットを撮ることはできません。そして、それはあなたがやろうとしていることのようです。

ビジュアル オブジェクトを iFrame から SWF ムービー エリアにドラッグする場合、1 つの方法として、HTML のコンテンツを HTML5 キャンバス要素にレンダリングし、ビットマップ データを抽出して SWF ムービーにプッシュし、OpenLaszlo で表示することが考えられます。見る。ただし、これは、ドラッグするすべてのビジュアル要素を HTML5 キャンバスに描画する必要があることを意味します。

以下は、Flash Player のフィルター機能を使用して、フィルターを HTML5 キャンバス要素の画像に適用する例です: http://www.quasimondo.com/archives/000695.php

この例に関連するファイルへのリンクは次のとおりです。

  1. 画像を処理するための目に見えない SWF を埋め込んだ HTML ページ。
  2. データを SWF ムービー クリップに送信するための関数を含むJavaScript ファイル。
  3. JavaScript から送信された画像データを処理し、処理されたデータを HTML ページに返すActionScript クラス。

しかし、iFrame にあるすべてのコンテンツをキャンバス要素にレンダリングできるかどうかはわかりません。

于 2012-10-19T16:38:13.483 に答える