AS3 - Можно загружать несколько изображений на сцену, изменять размер и перемещать каждое отдельно - PullRequest
0 голосов
/ 27 августа 2009

В настоящее время каждый загрузчик является дочерним для sprite - sprite.addChild (loader);

Затем я добавляю спрайт в поле movieClip, которое находится в myBorder movieClip - mainMovie.myBorder.box.addChild (sprite);

Далее я могу перетащить спрайт, используя -

mainMovie.addEventListener (MouseEvent.MOUSE_DOWN, PICKUP); mainMovie.addEventListener (MouseEvent.MOUSE_UP, Dropit);

функция pickUp (событие: MouseEvent): пусто { sprite.startDrag (); }

 function dropIt(event:MouseEvent):void
 {
sprite.stopDrag();
 }

Я хочу, чтобы каждый спрайт был отдельным, но у меня возникли проблемы с пониманием того, где использовать цикл for while. Я только хочу дать возможность загружать не более 5 изображений.

Может ли кто-нибудь здесь помочь мне? Спасибо Аннет Б.

Ответы [ 2 ]

0 голосов
/ 27 августа 2009

Простой цикл должен сделать

так вместо

mainMovie.addEventListener(MouseEvent.MOUSE_DOWN,pickUp); mainMovie.addEventListener(MouseEvent.MOUSE_UP,dropIt);

вы должны иметь, предполагая, что у вас нет других клипов внутри коробки, кроме спрайтов, которые содержат загрузчики, и вам нужно убедиться, что спрайты добавлены туда. Вероятно, вам следует использовать цикл for для добавления спрайтов и слушателей, но я не могу дать вам точный совет, так как у меня недостаточно информации

for(var i:int = 0 ; i < 5 ; i++){
    mainMovie.myBorder.box.getChildAt(i).addEventListener(MouseEvent.MOUSE_DOWN,pickUp);;
}
stage.addEventListener(MouseEvent.MOUSE_UP,dropIt);

Хорошо, объяснения:

цикл for - это простой, но мощный элемент языка. Я предлагаю прочитать документацию, скопировать и вставить пример кода в новый fla, настроить и освоить его. Это не так сложно, как может показаться.

Я добавляю обработчик MOUSE_UP на сцене, потому что в as3 есть проблема с этим. в as2 релиз снаружи работает.

0 голосов
/ 27 августа 2009

Вы не должны прислушиваться к перетаскиванию «спрайта». Вам нужны отдельные слушатели и обработчики для каждого ребенка, которого вы хотите перетаскивать. Так что вместо этого вам нужно выслушать у ребенка «спрайт»:

sprite.loader.addEventListener(MouseEvent.MOUSE_DOWN,pickUp); 
sprite.loader.addEventListener(MouseEvent.MOUSE_UP,dropIt);

Также вы должны перетаскивать дочерний элемент, а не ваш контейнер "sprite":

 function dropIt(event:MouseEvent):void
 {
     sprite.loader.stopDrag();
 }

Я не уверен, что вы пытаетесь выполнить с помощью цикла for, но вот пример базового цикла for, который создает несколько переменных загрузчика:

var loaderArray:Array = [];
for(var increment = 0; increment < numberOfUploads; increment++) {
    loaderArray[increment]:URLLoader = new URLLoader();
}

Надеюсь, это полезно. Было бы лучше, если бы мы могли видеть больше вашего кода.

...