У меня есть класс AS3, который расширяет movieClip с динамическим изображением, как сделать это изображение перетаскиваемым? - PullRequest
0 голосов
/ 11 августа 2010

Мне нужно сделать элемент перетаскиваемым (перетаскиваемым?) Извините, если моя терминология неверна!

У меня есть класс, в котором я буду хранить переменные и выполнять вычисления:

package Classes
{
    import flash.display.*;
    import flash.events.*;
    import flash.net.*;

    public class PrintItem extends MovieClip
    {     
        public var imageLoader:Loader;

        public function PrintItem()
        {

        }

        public function loadImage(url:String):void
        {
            imageLoader = new Loader();
            imageLoader.load(new URLRequest(url));
        }
    }
} 

Я создаю новый экземпляр класса, передаю ему URL в loadImage и добавляю его на холст следующим образом:

var myItem:PrintItem = new PrintItem();
myItem.loadImage("pic.jpg");
this.addChild(myItem.imageLoader);
myItem.imageLoader.x = 50;
myItem.imageLoader.y = 50;
myItem.imageLoader.addEventListener(MouseEvent.MOUSE_DOWN, pickUp);
myItem.imageLoader.addEventListener(MouseEvent.MOUSE_UP, dropIt);

Но там я застрял. Мне нужно сделать этот элемент перетаскиваемым и написать функции pickUp и dropIt. event.target.startDrag (ложь); не работает (загрузчик не перетаскивается) и event.target.parent.startDrag (false); не работает, так как вся сцена становится перетаскиваемой! ПОМОГИТЕ! Потому что на сцену добавлен только Загрузчик?

1 Ответ

0 голосов
/ 11 августа 2010

Хорошо.Я знаю, что прошло всего несколько минут, но я нашел ответ.Записать это здесь прояснилось в моей голове.Вот что сработало для меня, если это кому-нибудь еще поможет:

Сначала я добавил образ загрузчика в качестве ребенка в класс следующим образом:

public function loadImage(url:String):void
{
    imageLoader = new Loader();
    imageLoader.load(new URLRequest(url));
    this.addChild(imageLoader); // IMPORTANT!
    this.mouseChildren = false;
    this.addEventListener(MouseEvent.MOUSE_DOWN, pickUp);
    this.addEventListener(MouseEvent.MOUSE_UP, dropIt);
}

А потом мне нужно было только добавитькласс на сцену, а не загрузчик:

this.addChild(myItem);

Возвращаясь к классу, я добавил это:

public function pickUp(event:MouseEvent):void
{
  trace("Pickup");
  this.startDrag(false);
}
public function dropIt(event:MouseEvent):void
{
  this.stopDrag();
  trace("X = " + event.target.x + " Y = " + event.target.y); // Just to help me
}

Et вуаля!Это сработало!

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