JavaScript を使用して Flash アプレットの外へ、または外へドラッグ アンド ドロップすることはできますか?

StackOverflow https://stackoverflow.com/questions/82509

  •  01-07-2019
  •  | 
  •  

質問

Flash アプレットを含む Web ページが必要で、Web ページの残りの部分との間でいくつかのオブジェクトをドラッグ アンド ドロップしたいとします。これは可能でしょうか?

それを行うウェブサイトをどこかで知っていればボーナスです!

役に立ちましたか?

解決

これは私に興味をそそりました。私がこれを理解しようとしていた間に jessegavin がいくつかのコードを投稿したことは知っていますが、これはテスト済みです。フラッシュにドラッグしたり、フラッシュからドラッグしたりできる非常に単純な例があります。お昼休みにまとめたのでかなり汚いです。

こちらが デモ

そしてその ソース

基本クラスはから直接取得されます。 外部インターフェイス LiveDocs. 。ボタンにテキストを含められるように MyButton を追加しました。JavaScript の大部分は、同じ LiveDocs サンプルから来ています。

これをmxmlcを使用してコンパイルしました。

他のヒント

免責事項 このコードはまったくテストしていませんが、このアイデアは機能するはずです。また、これはドラッグのみを処理します フラッシュムービー。

以下は、 外部インターフェース クラス。

import flash.display.Sprite;
import flash.external.ExternalInterface;
import flash.net.URLLoader;
import flash.net.URLRequest;

if (ExternalInterface.available) {
  ExternalInterface.addCallback("handleDroppedImage", myDroppedImageHandler);
}

private function myDroppedImageHandler(url:String, x:Number, y:Number):void {

  var container:Sprite = new Sprite();
  container.x = x;
  container.y = y;
  addChild(container);

  var loader:Loader = new Loader();
  var request:URLRequest = new URLRequest(url);
  loader.load(request);

  container.addChild(loader);
}

HTML/jQueryコードは次のとおりです

<html>
<head>
  <title>XHTML 1.0 Transitional Template</title>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.5.2/jquery-ui.min.js"></script>
  <script type="text/javascript">
    $(function() {
      $("#dragIcon").draggable();

      $("#flash").droppable({ 
        tolerance : "intersect",
        drop: function(e,ui) {

          // Get the X,Y coords relative to to the flash movie
          var x = $(this).offset().left - ui.draggable.offset().left;
          var y = $(this).offset().top - ui.draggable.offset().top;

          // Get the url of the dragged image
          var url = ui.draggable.attr("src");

          // Get access to the swf
          var swf = ($.browser.msie) ? document["MyFlashMovie"] : window["MyFlashMovie"];

          // Call the ExternalInterface function
          swf.handleDroppedImage(url, x, y);

           // remove the swf from the javascript DOM
          ui.draggable.remove();
        }
      });
    });
  </script>
</head>
<body>

  <img id="dragIcon" width="16" height="16" alt="drag me" />

  <div id="flash">
    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
      id="MyFlashMovie" width="500" height="375"
      codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">
      <param name="movie" value="MyFlashMovie.swf" />
      <param name="quality" value="high" />
      <param name="bgcolor" value="#869ca7" />
      <param name="allowScriptAccess" value="sameDomain" />
      <embed src="MyFlashMovie.swf" quality="high" bgcolor="#869ca7"
        width="500" height="375" name="MyFlashMovie" align="middle"
        play="true" loop="false" quality="high" allowScriptAccess="sameDomain"
        type="application/x-shockwave-flash"
        pluginspage="http://www.macromedia.com/go/getflashplayer">
      </embed>
    </object>
  </div>

</body>
</html>

落とす可能性はあると言えます アイテムがフラッシュ要素を含む にドラッグされていることを検出し、ドラッグされたオブジェクトの Z インデックスがフラッシュよりも高いように設定した場合は、フラッシュします。その後、ドロップされたときに、JavaScript を使用して Flash に話しかけ、どこに何がドロップされたかを通知できます。

ただし、その逆はおそらくはるかに困難です。オブジェクトが Flash ムービーの境界に達したときを検出し、それを JavaScript ハンドラーに「渡す」必要があるからです (HTML で作成し、Flash で非表示にします)。

おそらく問題は、苦労する価値があるかどうか、それとも JS または Flash ですべてを実現できるかどうかを知ることです。

ちょっと待ってください。カプセル化ポイントは有効ですが、Flash は JS 関数を実行できます。より高い z-index を持つ HTML 要素が Flash ムービー上でフロートされるべきだという Seldaek の指摘は正しいです。したがって、すべてのドラッグ処理を JS で実行し、Flash にアプリ内のポインターの独自の寸法と位置を読み取らせると、(特に) ポインターが外部を離れたときでも、要素をポインターにスレーブするという JS メソッドに通知できます。 Flash アプリの境界。かなり毛深いでしょうけど。

サイト全体が 1 つの大きな埋め込み Flash ファイルである場合は、可能です。

それ以外の方法では達成できないと思います

Flash では不可能です - 同じ Flash アプリケーション内のターゲットにドラッグする場合を除きます。

おそらく、署名付き Java アプレットを使用して実行できるでしょう (しかし、誰がその道を進みたいでしょうか?)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top