PDA

Просмотр полной версии : Множество объектов и события


xomka
15.01.2008, 19:21
Раздела для начинающих не нашел, так что осмелюсь спросить тут:)

Есть мовики (model1, model2, model3 ....), идущие в ряд, я создал массив с данными мувиками

var models:Array = new Array();
models[0] = model1;
models[1] = model2;
models[2] = model3;
models[3] = model4;


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

Я попытался сделать так:

for each (var obj in models)
{
obj.addEventListener(MouseEvent.CLICK, function handler(event:MouseEvent):void { moveModel(obj);});
}


Но при вызове функции moveModel в obj содержится model4 в данном случае...

Подскажите пожалуйста..!!

wvxvw
15.01.2008, 20:24
var models:Array = new Array();
models[0] = new Mod();
models[1] = new Mod();
models[2] = new Mod();
models[3] = new Mod();
var i:uint = 0;
var j:uint = 0;
for each (var obj:Mod in models)
{
obj.buttonMode = true;
obj.x = i;
i += obj.width + 5;
obj.__id = ++j;
addChild(obj);
obj.addEventListener(MouseEvent.CLICK, moveModel);
}
function moveModel(event:Event):void {
trace(event.target.toString());
trace(event.target.x);
trace(event.target.__id);
}По идее должно хватить =)

2morrowMan
15.01.2008, 23:04
Если тебе нравится так писать, то зделай так:
for each (var obj in models)
{
obj.addEventListener(MouseEvent.CLICK, function handler(event:MouseEvent):void { moveModel(event.target);});
}

xomka
30.01.2008, 02:28
Сделал следующим образом, прошу оценить верно ли решение и насколько оно коряво.

В этом мувике добавил еще один кадр, и:

var models:Array = new Array();
models[0] = model1;
models[1] = model2;
models[2] = model3;

var output:uint;
var i:uint = 0;
var j:uint = 0;

if(output!=1){#Это чтобы при каждом входе во фрейм объекты заново
#не выстраивались

for each (var obj in models) {
obj.x = i;
obj.st_x = i;
i += obj.width + 5;
obj.__id = ++j;
obj.addEventListener(MouseEvent.CLICK, moveModel);
}
output=1;
}

function moveModel(event:Event):void {
for each (var obj in models) {
if (obj.__id > event.target.__id) {
obj.moveObjRight = 1; # всем мувикам которые правее я назначаю свойство, чтобы двигать их.

}
}
}


for each (var obj2 in models) { # теперь при каждом входе во фрейм я проверяю у каких объектов свойство moveObjRight=1 и двигаю их... И вообще такую конструкцию я замутил, чтобы двигать объекты постепенно, а не просто поменять координаты, то есть для анимации
if(obj2.moveObjRight==1){
obj2.x+=1;
}
if(obj2.st_x < obj2.x - 10 ){ # Как только они отодвинулись на нужное расстояние приравниваю свойство moveObjRight=0 и они соответственно перестают отодвигаться...
obj2.st_x = obj2.x;
obj2.moveObjRight = 0;
}
}

Так же не могу понять, мне необходимо чтобы при повторном щелчке по объекту все "отодвинутые" двигались обратно. Или же если щелчок по другому объекту, то необходимо "отодвинутые" поставить на место и начать перемещение уже относительно того по которому щелкнули...

Извините за корявость изложения:)))

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

etc
30.01.2008, 02:50
Ваше решение коряво уже тем, что вы код в кадре пишете.

xomka
30.01.2008, 14:32
Хм.. а где же его писать? :)

etc
30.01.2008, 14:41
В классах.

xomka
30.01.2008, 14:46
я бы с радостью... но времени на полноценное изучение нет, а надо быстренько сделать все

VovkaMorkovka
30.01.2008, 14:50
А вы так будете "быстренько" всю жизнь делать ерунду и получать за это ерунду, а оно Вам надо? Лучше потратить время на изучение раз, даже если заказчик кричит мне надо на вчера - сам он дурак значит, что довел до такого состояния

xomka
30.01.2008, 15:01
Уважаемые форумчане, если у вас нет желания помочь или по каким-то религиозно/политическим/психическим причинам ваше эго не позволяет это сделать, то можно ничего не писать.

VovkaMorkovka у меня абсолютно другая специализация, и изучать полноценно флеш из-за одного задания не имею возможности

VovkaMorkovka
30.01.2008, 15:33
VovkaMorkovka у меня абсолютно другая специализация, и изучать полноценно флеш из-за одного задания не имею возможности
Папа, папа, как микроскопом гвозди забивать? Да папа, я знаю, что для этого молоток есть но я хочу микроскопом! Молоток, он ведь тяжелый да и по пальцам попасть можно, нет у меня времени на изучение молотка :)

xomka
30.01.2008, 16:08
Вы неадектватны, прошу избавить меня от ваших сообщений.

etc
30.01.2008, 19:34
Легко. Тема закрыта.
Вы не умеете или не хотите прислушиваться к другим. А раз нет, то и смысла нет.