Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用JavaScript在Flash小程序外部拖放?_Javascript_Flash_Drag And Drop - Fatal编程技术网

是否可以使用JavaScript在Flash小程序外部拖放?

是否可以使用JavaScript在Flash小程序外部拖放?,javascript,flash,drag-and-drop,Javascript,Flash,Drag And Drop,假设我想要一个包含Flash小程序的网页,我想从网页的其余部分拖放一些对象,这可能吗 奖金,如果你知道一个网站的地方,这样做 如果整个站点是一个大的嵌入式flash文件,那么是的,这是可能的 我不认为你能以任何其他方式实现它我想说,如果你检测到项目被拖到包含Flash内容的页面上,并且你将被拖的对象的z索引设置为高于Flash,那么就有可能拖放到Flash。然后,当它被删除时,您可以使用javascript与Flash对话,告诉它删除的位置和内容 然而,另一种方法可能要困难得多,因为您必须检测对

假设我想要一个包含Flash小程序的网页,我想从网页的其余部分拖放一些对象,这可能吗


奖金,如果你知道一个网站的地方,这样做

如果整个站点是一个大的嵌入式flash文件,那么是的,这是可能的


我不认为你能以任何其他方式实现它

我想说,如果你检测到项目被拖到包含Flash内容的页面上,并且你将被拖的对象的z索引设置为高于Flash,那么就有可能拖放到Flash。然后,当它被删除时,您可以使用javascript与Flash对话,告诉它删除的位置和内容

然而,另一种方法可能要困难得多,因为您必须检测对象何时到达flash电影的边界,并将其“传递”给javascript处理程序(在html中创建它,在flash中隐藏它)


问题可能是要知道这是否值得,或者你是否可以在JS或Flash中实现所有功能?

在Flash中不可能-除非你想拖动到同一个Flash应用程序中的目标


也许可以用一个签名的Java小程序来完成(但是谁想走这条路呢?

等等,封装点是有效的,但是flash可以执行JS函数,Seldaek认为具有更高z索引的HTML元素应该在flash电影中浮动是正确的。因此,如果您在JS中执行所有的拖动处理,并让flash读取其自身的尺寸和应用程序中指针的位置,那么它可能会向JS方法发出信号,指示从元素指向指针,即使(特别是)指针离开flash应用程序的边界。这将是一个非常棘手的问题。

免责声明我根本没有测试过这段代码,但这个想法应该是可行的。此外,这只处理将拖动到flash电影的操作

下面是一些ActionScript3.0代码,它利用了这个类

下面是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>

XHTML1.0过渡模板
$(函数(){
$(“#dragIcon”).draggable();
$(“#flash”).dropable({
公差:“相交”,
drop:函数(e、ui){
//获取与flash电影相关的X,Y坐标
var x=$(this.offset().left-ui.draggable.offset().left;
var y=$(this.offset().top-ui.draggable.offset().top;
//获取拖动图像的url
var url=ui.draggable.attr(“src”);
//访问swf
var swf=($.browser.msie)?文档[“MyFlashMovie”]:窗口[“MyFlashMovie”];
//调用外部接口函数
swf.handleDroppedImage(url,x,y);
//从javascript DOM中删除swf
ui.draggable.remove();
}
});
});

这件事引起了我的兴趣。我知道jessegavin在我去弄明白这件事的时候发了一些代码,但这一个是经过测试的。我有一个超级简单的工作示例,可以让您在flash中来回拖动。午餐休息时我把它扔在一起,弄得一团糟

这是我的建议

基类直接取自。我添加了MyButton,这样按钮就可以有一些文本。大多数javascript都来自同一个LiveDocs示例


我使用mxmlc编译了它。

所以我猜答案是:这可能是可能的,但没有已知的API或其他工具以标准方式进行编译
<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>