Перетаскивание не работает на пользовательском классе, унаследованном от Moviclip - PullRequest
0 голосов
/ 05 мая 2010

РЕДАКТИРОВАТЬ: Если у меня есть класс с именем Items, и у него есть экземпляр movieclip, который загружается из URL. StartDrag на элемент не удается. Если Предметы содержат мувиклип, который мы инициируем из SWC (не загружаем его) при перетаскивании, то это нормально.

Теперь, как решить проблему, когда у меня есть класс, в который загружен мувиклип снаружи.

У меня есть следующий код:

пакет { импорт flash.display.Sprite; импорт 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 и помещает его в мувиклип (элемент наследуется из мувиклипа)

Следы из приведенного выше кода показывают, что работает только функция mouseUp. MouseDown не работает. Хотя тот же код отлично работает для простого мувиклипа

Я уже пробовал

stage.addEventListener(MouseEvent.MOUSE_DOWN,mouseDown);

РЕДАКТИРОВАТЬ: я попытался снова поставить mouseDown на сцену, если я щелкаю вне элемента и перетаскиваю со сцены, кажется, что mouseDown и Up работают. Но если я нажму на элемент и перетащу. Все еще не повезло. Я также добавил этот предмет как мувиклип на сцене.

1 Ответ

0 голосов
/ 05 мая 2010

событие, вероятно, отправляется из загруженного клипа, а не из самого элемента. Попробуйте использовать свойство mouseChildren для перехвата всех событий.

 item.mouseChildren = false;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...