Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Закрытая тема
Старый 15.01.2008, 19:21
xomka вне форума Посмотреть профиль Отправить личное сообщение для xomka Найти все сообщения от xomka
  № 1  
xomka

Регистрация: Sep 2005
Адрес: Spb
Сообщений: 32
Отправить сообщение для xomka с помощью ICQ
По умолчанию Множество объектов и события

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

Есть мовики (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 в данном случае...

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

Старый 15.01.2008, 20:24
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код:
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);
}
По идее должно хватить =)
__________________
Hell is the possibility of sanity

Старый 15.01.2008, 23:04
2morrowMan вне форума Посмотреть профиль Отправить личное сообщение для 2morrowMan Найти все сообщения от 2morrowMan
  № 3  
2morrowMan
 
Аватар для 2morrowMan

Регистрация: Aug 2007
Сообщений: 467
Если тебе нравится так писать, то зделай так:
Код:
for each (var obj in models)
{
  obj.addEventListener(MouseEvent.CLICK, function handler(event:MouseEvent):void { moveModel(event.target);});
}


Последний раз редактировалось 2morrowMan; 15.01.2008 в 23:06.
Старый 30.01.2008, 02:28
xomka вне форума Посмотреть профиль Отправить личное сообщение для xomka Найти все сообщения от xomka
  № 4  
xomka

Регистрация: Sep 2005
Адрес: Spb
Сообщений: 32
Отправить сообщение для xomka с помощью ICQ
Сделал следующим образом, прошу оценить верно ли решение и насколько оно коряво.

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

Код:
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;
		}	
}
Так же не могу понять, мне необходимо чтобы при повторном щелчке по объекту все "отодвинутые" двигались обратно. Или же если щелчок по другому объекту, то необходимо "отодвинутые" поставить на место и начать перемещение уже относительно того по которому щелкнули...

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

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

Старый 30.01.2008, 02:50
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Ваше решение коряво уже тем, что вы код в кадре пишете.

Старый 30.01.2008, 14:32
xomka вне форума Посмотреть профиль Отправить личное сообщение для xomka Найти все сообщения от xomka
  № 6  
xomka

Регистрация: Sep 2005
Адрес: Spb
Сообщений: 32
Отправить сообщение для xomka с помощью ICQ
Хм.. а где же его писать?

Старый 30.01.2008, 14:41
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
В классах.

Старый 30.01.2008, 14:46
xomka вне форума Посмотреть профиль Отправить личное сообщение для xomka Найти все сообщения от xomka
  № 8  
xomka

Регистрация: Sep 2005
Адрес: Spb
Сообщений: 32
Отправить сообщение для xomka с помощью ICQ
я бы с радостью... но времени на полноценное изучение нет, а надо быстренько сделать все

Старый 30.01.2008, 14:50
VovkaMorkovka вне форума Посмотреть профиль Отправить личное сообщение для VovkaMorkovka Найти все сообщения от VovkaMorkovka
  № 9  
VovkaMorkovka
[+3 13.02.08]

Регистрация: Apr 2006
Сообщений: 421
А вы так будете "быстренько" всю жизнь делать ерунду и получать за это ерунду, а оно Вам надо? Лучше потратить время на изучение раз, даже если заказчик кричит мне надо на вчера - сам он дурак значит, что довел до такого состояния

Старый 30.01.2008, 15:01
xomka вне форума Посмотреть профиль Отправить личное сообщение для xomka Найти все сообщения от xomka
  № 10  
xomka

Регистрация: Sep 2005
Адрес: Spb
Сообщений: 32
Отправить сообщение для xomka с помощью ICQ
Уважаемые форумчане, если у вас нет желания помочь или по каким-то религиозно/политическим/психическим причинам ваше эго не позволяет это сделать, то можно ничего не писать.

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

Создать новую тему Закрытая тема Часовой пояс GMT +4, время: 15:42.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 15:42.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.