Actionscript 3 使多个对象可拖动

Actionscript 3 使多个对象可拖动,actionscript-3,actionscript,actionscript-2,Actionscript 3,Actionscript,Actionscript 2,我有大约50个符号,我想让它们可以拖动。没什么特别的,只是能够点击它并将其拖动到不同的位置 我找到了用于执行此操作的as3代码,但当我将其粘贴到我的文件中时,会出现错误: **Error** Scene=Scene 1, layer=Units, frame=1:Line 9: The class or interface 'MouseEvent' could not be loaded. function mouseDownHandler(evt:MouseEvent):void

我有大约50个符号,我想让它们可以拖动。没什么特别的,只是能够点击它并将其拖动到不同的位置

我找到了用于执行此操作的as3代码,但当我将其粘贴到我的文件中时,会出现错误:

**Error** Scene=Scene 1, layer=Units, frame=1:Line 9: The class or interface 'MouseEvent'      could not be loaded.
 function mouseDownHandler(evt:MouseEvent):void {
该代码是:

// Register mouse event functions
fighter_uk.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
fighter_uk.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);

fighter_uk.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
fighter_uk.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);

// Define a mouse down handler (user is dragging)
function mouseDownHandler(evt:MouseEvent):void {
var object = evt.target;
// we should limit dragging to the area inside the canvas
object.startDrag();
}

function mouseUpHandler(evt:MouseEvent):void {
var obj = evt.target;
    obj.stopDrag();
}
我使用的是flash pro 8,所以我尝试查找as2代码,但找不到


另外,是否有一种“简单”的方法来编写所有50个对象的代码?

我认为您正在尝试使用AS2编译器编译AS3代码。尝试将编译设置更改为目标AS3。 此外,您可能需要在代码顶部包含类导入:

import flash.events.MouseEvent;
要拖动50个对象,请将它们全部添加到同一容器精灵中,并仅将侦听器添加到容器精灵中:

var holder:Sprite = new Sprite();
for ( var i:int = 0, l:int = 50; i < l; i++ ) {
  var dragee:YOUR_CUSTOM_OBJECT = new YOUR_CUSTOM_OBJECT();
  holder.addChild(dragee);
}
addChild(holder);
holder.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
holder.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
holder.addEventListener(Event.MOUSE_LEAVE, mouseUpHandler);
var currentDragee:YOUR_CUSTOM_OBJECT = null;
function mouseDownHandler(evt:MouseEvent):void {
  currentDragee = evt.target as YOUR_CUSTOM_OBJECT;
  if ( currentDragee !== null ) {
    currentDragee.startDrag();
    holder.addChild(currentDragee); // bring current to front position
  }
}
function mouseUpHandler(evt:Event):void {
  if ( currentDragee !== null ) currentDragee.stopDrag();
  currentDragee = null;
}
var-holder:Sprite=new-Sprite();
对于(变量i:int=0,l:int=50;i
您的自定义对象是需要拖动的对象类。希望有帮助

页面似乎有您正在寻找的答案(AS2拖放)。如果你已经看过了,你需要解释为什么它不能满足你的需要

如果要在AS2中拖放多个实例,仍然可以将代码添加到movieClip符号,从库中导出代码,并使用attachMovie加载实例(全部50个)。如果它们都不同,那么根据需要将代码附加到剪辑本身,或者附加到其他一些函数,这些函数将捕获所有单击并确定单击了什么。这在AS2中是非常可行的

请记住,您可以使用onClipEvent(load)函数设置许多初始提升

这是我在AS2中制作的一个节点树。它可以拖动(鼠标拖动)和缩放(使用鼠标滚轮)。可以通过单击节点框中的小向下箭头来添加节点。每个节点都在侦听鼠标

您将要了解本节的大部分内容:

// Enable drag on button press
on (press) 
{
    startDrag(this);
}
// Stop the drag on release of mouse button
on (release) 
{

    stopDrag();
}

除此之外,我真的不确定你的设置看起来如何,所以我希望这有助于顺利进行。(查看链接,里面有很多小宝石)。

Flash Professional 8只支持ActionScript 2和1
你可以跟随这位官员,学习如何在ActionScript 2中做到这一点,但我非常推荐你使用ActionScript 3。

我要完全诚实地说,我不知道如何做到这一点。我想我可以把找到的代码复制粘贴到时间线上。哈哈,我甚至不知道什么是精灵。我认为flash 8仅限于AS2。您将需要更新版本的Flash。AS2是从新的FLash CC中删除的传统语言。我想你应该远离AS2,学习AS3或HTML/JS/CSS——为这个坏消息感到抱歉:)是的,但我没有其他的程序,这就是我的程序。让对象在as2中可拖动是不可能的吗?这当然是可能的——谷歌搜索,你会找到答案的。我在那个页面上尝试了代码,我可以让它在特定的实例上工作,但我不知道如何让它在每个实例上都工作。好的,给我一两分钟,我会发布更多的代码(来自我的示例)。很高兴听到您将其拖动,现在我们只需要覆盖所有实例。当我应用代码时,我通过右键单击符号的实例并按下“操作”将其放置在其中。我确信这是我做错的一部分,但我不知道还能把它放在哪里……我的样本使用了一种复杂的方法。告诉我。。。舞台上的所有符号都已经存在,还是使用AS2从库中加载?这些符号是相同的还是唯一的?好的,舞台上已经有符号了。还有各种不同的符号。但最终我需要一种方法来创建它们的新实例。