2009-08-26 1 views
0

В настоящее время каждый загрузчик является дочерним элементом спрайта - спрайт.addChild (загрузчик);AS3 - Может загружать несколько изображений на сцену, хотите их размер и перемещать отдельно.

Далее я добавляю спрайт в окно MovieClip, которое с myBorder movieClip - mainMovie.myBorder.box.addChild (спрайт);

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

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

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

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

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

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

ответ

0

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

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

Кроме того, вы должны быть тащите ребенок, а не ваш «спрайт» контейнер:

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

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

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

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

+0

Я хочу настроить таргетинг на каждое изображение с другим именем, чтобы я мог перетащить/уменьшить размер вверх/вниз. частная функция завершена (событие: Event): пустота \t \t {\t \t \t \t \t \t функция imgVal(): Number \t \t \t { \t \t \t \t IMG + = 1; \t \t \t \t возвращение img; \t \t \t \t \t \t imgVal(); \t \t \t var спрайт: Sprite = new Sprite(); \t \t \t sprite.addChild (loader); \t \t \t sprite.name = "pict" + img; \t \t \t след (sprite.name); \t \t \t _fla.myBorder.box.addChild (спрайт); \t \t \t _fla.addEventListener (MouseEvent.MOUSE_DOWN, pickUp); \t \t \t _fla.addEventListener (MouseEvent.MOUSE_UP, dropIt); \t \t \t Это дает мне такое же имя для каждого спрайта Pict1 вместо Pict1, pict2 и т.д. Благодаря Annette B. –

+0

Похоже, у вас есть все, что вам нужно. Вам нужно знать количество детей, которые вы пытаетесь добавить (numberOfUploads, в моем вышеприведенном коде). Кроме того, вам нужно увеличить имя спрайта (img в вашем коде - это увеличение моего кода). Кроме того, вы меняете имя «спрайт», почему вы не меняете имя добавляемых вами детей? – AyexeM

0

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

так вместо

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

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

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

Ok, объяснениями:

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

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

+0

Я хочу настроить таргетинг на каждое изображение с другим именем, чтобы я мог перетаскивать/увеличивать размер вверх/вниз. частная функция завершена (событие: Event): пустота \t \t {\t \t \t \t \t \t функция imgVal(): Number \t \t \t { \t \t \t \t IMG + = 1; \t \t \t \t возвращение img; \t \t \t \t \t \t imgVal(); \t \t \t var спрайт: Sprite = new Sprite(); \t \t \t sprite.addChild (loader); \t \t \t sprite.name = "pict" + img; \t \t \t след (sprite.name); \t \t \t _fla.myBorder.box.addChild (спрайт); \t \t \t _fla.addEventListener (MouseEvent.MOUSE_DOWN, PICKUP); \t \t \t _fla.addEventListener (MouseEvent.MOUSE_UP, dropIt); \t \t \t Это дает мне такое же имя для каждого спрайта Pict1 вместо Pict1, pict2 и т.д. Благодаря Annette B. –

+0

Я изменил код немного: частный вар imgNum: INT; частная функция полная (событие: событие): void { \t imgNum ++ \t var спрайт: Sprite = new Sprite(); \t sprite.addChild (loader); \t sprite.name = "pict" + imgNum; \t след (sprite.name); \t _fla.myBorder.box.addChild (спрайт); \t sprite.addEventListener (MouseEvent.MOUSE_DOWN, pickUp); \t sprite.addEventListener (MouseEvent.MOUSE_UP, dropIt); } функция pickUp (событие: MouseEvent): void { \t след (event.currentTarget.name); } Функция imgVal(): Number {img + = 1; return img; } imgVal(); это то же самое, что приращение числа на единицу, для которого у вас есть оператор ++. –

+0

что я использовал: imgVal(); \t var спрайт: Sprite = new Sprite(); \t sprite.addChild (loader); sprite.name = "pict" + imgNum; \t след (sprite.name); \t _fla.myBorder.box.addChild (спрайт); \t sprite.addEventListener (MouseEvent.MOUSE_DOWN, pickUp); \t //sprite.addEventListener(MouseEvent.MOUSE_UP,dropIt); \t} \t функция PICKUP (событие: MouseEvent): пустота \t \t { \t следа (event.currentTarget.name); \t} \t функция imgVal(): Number \t { \t IMG + = 1; \t return img; \t} Однако каждая загруженная фотография имеет имя pict0, и каждая добавленная фотография также имеет название pict0. Хотели бы, чтобы каждый из них был pict1, pict2 и т. Д. спасибо –

Смежные вопросы