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