拖动不工作继承自Moviclip的Custom类

时间:2010-05-05 11:16:26

标签: flash actionscript-3

编辑:如果我有一个名为Items的类,它有一个从网址加载的movieclip实例。项目的startDrag失败。如果Items包含一个动画片段,我们从一个SWC(不加载它)开始拖动工作正常。

现在如何解决我有一个从外面加载movieClip的类的问题。

我有以下代码:

包{     import flash.display.Sprite;     import flash.events.MouseEvent;

import lib.CustomEvents.ItemLoadCompleteEvent;
import lib.Room.Item;
import lib.Room.ItemStruct;

public class DragTest extends Sprite
{
    private var itemInstance:Item;
    public function DragTest()
    {
        var tempItemStruct:ItemStruct = new ItemStruct("test",0,0,200,250,"wall","","inventory");
        itemInstance = new Item(tempItemStruct);
        itemInstance.addEventListener(ItemLoadCompleteEvent.CONTROL_TYPE,loadComplete);

        stage.addEventListener(MouseEvent.MOUSE_UP,mouseUp);
    }

    private function loadComplete(e:ItemLoadCompleteEvent):void
    {
        itemInstance.addEventListener(MouseEvent.MOUSE_DOWN,mouseDown);
        this.addChild(itemInstance);

    }

    private function mouseUp(e:MouseEvent):void
    {
        itemInstance.stopDrag();
        trace("MouseUp");
    }

    private function mouseDown(e:MouseEvent):void
    {
        itemInstance.startDrag();
        trace("MouseDown");

    }

}
}

我使用了与普通剪辑相同的代码,但它确实有用。当我将它与我自己定义的项目一起使用时,它不起作用。以下是详细信息。

itemStruct:包含要制作的项目的属性。 item:加载itemstruct定义的项目并将其放入movieclip(项目继承自movieclip)

从上面的代码跟踪,显示只有mouseUp函数工作mouseDown不起作用。虽然相同的代码适用于简单的动画片段

我已经尝试了

stage.addEventListener(MouseEvent.MOUSE_DOWN,mouseDown);

编辑:我已经尝试将mouseDown再次放在舞台上,如果我在项目外单击并从舞台拖动它mouseDown和Up似乎都有效。但如果我点击该项目并拖动。仍然没有运气。我还在舞台上将项目添加为movieclip。

1 个答案:

答案 0 :(得分:0)

事件可能是从加载的剪辑发送的,而不是项目本身。尝试使用mouseChildren属性捕获所有事件。

 item.mouseChildren = false;