PDA

Просмотр полной версии : Вопрос по функциям и спрайтам


koljsch
22.06.2012, 00:57
Как сделать массив спрайтов и каждому элементу массива прописать одну функцию?
И как далее узнать какой именно элемент массива вызвал эту функцию?

КорДум
22.06.2012, 01:00
event.target
И используйте циклы )

koljsch
22.06.2012, 01:05
event.target как я понял возвращает кто вызвал.
А массив спрайтов?
Т.е. если циклы, то что-то типа:
for(i=0;i<=20;++i)
var container[i]:Sprite = new Sprite();
Правильно?

КорДум
22.06.2012, 01:08
var spriteList:Vector.<Sprite> = new <Sprite>[];

for (var i:uint = 0; i < 50; i++) {
var sprite:Sprite = new Sprite();
spriteList.push(sprite);
// spriteList[i] = sprite;
}

Хм, почитайте Мука, который Колин, что ли...

koljsch
22.06.2012, 01:10
ошибка при компиляции в var spriteList:Vector.<Sprite> = new <Sprite>[];

КорДум
22.06.2012, 01:11
Какая ошибка? Я на коленке пишу, а на форуме нет ни автокомплита, ни компилятора.

Добавлено через 43 секунды
У меня все нормально.
Вектор появился только в 10 версии флеш плеера. Вы под нее компилите?

Добавлено через 3 минуты
Ну создайте просто массив тогда. Потому что я не знаю, где в FlashIDE версию переключать, я ей почти не пользуюсь.
var spriteList:Array = [];

koljsch
22.06.2012, 01:16
Вот и проблема, нет))
Блин, значит придется сделать большое количество спрайтов)))

КорДум
22.06.2012, 01:16
Массив используйте.

koljsch
22.06.2012, 01:19
Ну вопрос та в этом и был, как использовать массив из спрайтов)) Так получается все-таки как-то можно сделать его?

strangedk
22.06.2012, 01:20
var spriteList:Vector.<Sprite> = new Vector.<Sprite>();

koljsch
22.06.2012, 01:21
Да я это понял, но делаю под 9 версию плеера

КорДум
22.06.2012, 01:21
strangedk, разницы нет. Человек компилит под девятую версию, как я понял. А там либо полной записью пиши, либо короткой — все одно.
Ну вопрос та в этом и был, как использовать массив из спрайтов)) Так получается все-таки как-то можно сделать его?
А я выше что писал?

strangedk
22.06.2012, 01:22
по моему вопрос звучит как "как создать массив" при чем не спрайтов, а вообще чего-либо.
посмотрите пожалуйста здесь: Array (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/Array.html)

КорДум
22.06.2012, 01:27
И все-таки Мук очень даже не помешает.

koljsch
22.06.2012, 01:45
strangedk
Как сделать массив спрайтов-нет, Вы не правы, первое мое сообщение.
КорДум
Вы написали чтобы я использовал массив. Или Вы имели в виду обычный массив?

КорДум
22.06.2012, 01:46
Сначала вектор, после того, как узнал версию плеера, сказал про обычный.

koljsch
22.06.2012, 01:48
Ясно. Ну теперь нужно добить последнее)) Это event.target. Вот допустим я узнал объект, а как через event.target ему присвоить допустим те же X и Y?

КорДум
22.06.2012, 01:50
Там корректнее будет event.currentTarget.
Те же, которые какие?

koljsch
22.06.2012, 01:53
Все, я понял, просто подставить так event.currentTarget.x и присвоить))

garymar
22.06.2012, 11:17
var spriteList.<Sprite> = new Vector.<Sprite>();

for (var i:uint = 0; i < 50; i++) {
var sprite:Sprite = new Sprite();
spriteList.push(sprite);
}

"...и каждому элементу массива прописать одну функцию?..."
Функцию чего? Что она должна делать?

strangedk
22.06.2012, 12:44
strangedk
-нет, Вы не правы, первое мое сообщение.


Не правы Вы. Потому что массив спрайтов делается точно так же как и массив любого другого типа.
Соответственно я могу утверждать что вы не знаете как использовать массивы в принципе.

nOobCrafter
22.06.2012, 14:00
var spriteList.<Sprite> = new Vector.<Sprite>();

for (var i:uint = 0; i < 50; i++) {
var sprite:Sprite = new Sprite();
sprite.addEventListener(MouseEvent.CLICK, onClickHandler);
spriteList[i] = sprite;
}

function onClickHandler(event.MouseEvent):void {
trace("click:", event.currentTarget.name);
}

КорДум
22.06.2012, 14:01
Людиии. 9 версия плеера, какой вектор?
Тем более уже все человек понял еще ночью.

strangedk
22.06.2012, 14:01
Ребят, вы тему читаете? человеку нужен не вектор а массив.

Добавлено через 37 секунд
КорДум первее написал )