Делаем загружаемое изображение перетаскиваемым actioncript 3 - PullRequest
0 голосов
/ 27 апреля 2009

Я хочу загрузить изображение на сцену, используя Loader, а затем я хочу сделать его перетаскиваемым. Загрузка выполняется путем выбора из списка листов, как показано ниже, но я не имею понятия о перетаскивании в AS3, кто-нибудь может мне помочь? Я хочу сделать это как можно проще.

Вот мой код для загрузки изображения:

var charge1:Loader = new Loader();
addChild(charge1);
this.addChildAt(charge1, getChildIndex(bg));
charge1.x = 280;
charge1.y = 270;

...

function setCharge1(e:Event):void{
    trace(e.target.selectedItem.source);

    this.charge1.load(new URLRequest(e.target.selectedItem.source));    
    this.charge1.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
}

Ответы [ 4 ]

2 голосов
/ 03 марта 2011

Это самый простой способ для меня ...

/* Load Image */

var myLoader:Loader = new Loader(); 
imageContainer.addChild(myLoader); 
var url:URLRequest = new URLRequest("photo.jpg"); 
myLoader.load(url);

/* Drag and Drop */

imageContainer.addEventListener(MouseEvent.MOUSE_DOWN, pickUp);
function pickUp(event:MouseEvent):void
{
imageContainer.startDrag();
}
stage.addEventListener(MouseEvent.MOUSE_UP, dopIt);

function dopIt(event:MouseEvent):void
{
imageContainer.stopDrag();
}
2 голосов
/ 27 апреля 2009

Юку шел по правильному пути, но вы хотите получить содержимое loaderInfo, которое на самом деле является клипом, который загружен. Что-то вроде

private function onComplete(event : Event) : void
{
  var loadedClip : MovieClip = LoaderInfo(event.target).content;

  loadedClip.addEventListener(MouseEvent.MOUSE_DOWN, function(event : MouseEvent) 
  {
    loadedClip.startDrag();
  });

  stage.addEventListener(MouseEvent.MOUSE_UP, function(event : MouseEvent) 
  {
      loadedClip.stopDrag();
  });

}
1 голос
/ 27 апреля 2009

Используйте следующий код:

this.addEventListener(MouseEvent.MOUSE_DOWN, dragMovie);
this.addEventListener(MouseEvent.MOUSE_UP, dropMovie);
this.buttonMode = true;
private function dragMovie(event:MouseEvent):void
{
  this.startDrag();
}

private function dropMovie(event:MouseEvent):void
{
  this.stopDrag();
}
0 голосов
/ 27 апреля 2009

Loader является подклассом Sprite, поэтому вы можете использовать метод startDrag и stopDrag.

Например:

charge1.addEventListener("mouseDown", function() {
    charge1.startDrag();
});

stage.addEventListener("mouseUp", function() {
    charge1.stopDrag();
});
...