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

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

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

Регистрация: Jul 2005
Сообщений: 13
По умолчанию Как определить по какому MovieClip кликнули

Добрый день

Подскажите пожалуйста как определить по какому MovieClip кликнули.

Я динамически загружаю фотографии в фильм так:

for (i=1; i<=kol; i++)
{
_root.createEmptyMovieClip("images_" + i + "", i);
loadMovie("./portfolio/" + path + "/" + i + ".jpg", "images_" + i + "");
}

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

images_2.onRelease = function() {
getURL("javascript:void window.open('/portfolio/" + path + "/2.jpg', '1', 'width=187,height=290,directories=no,location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no');");
};

Но так будет работать при условии, что я в ручную задаю имя images_2, а как сделать чтобы в динамике отслеживалось по какой из фотографии (MovieClip) кликнули?

За ранее благодарен

Старый 17.08.2005, 12:43
DeadMorozz вне форума Посмотреть профиль Отправить личное сообщение для DeadMorozz Найти все сообщения от DeadMorozz
  № 2  
Ответить с цитированием
DeadMorozz
 
Аватар для DeadMorozz

Регистрация: Apr 2001
Адрес: Kiev-Simferopol
Сообщений: 133
Кажется, вот так должно работать.
Ты просто циклом делаешь клипы - и на каждый, не отходя от кассы, вешаешь свой экшен. Но, заметь, это просто пример кода - в реальной разработке надо все эти созданные клипы еще как-то размещать на опредеденном расстоянии друг от друга, но нет никакой информации о том, как они будут выкладываться.
Код:
for (i=1; i<=kol; i++){
	var clip:MovieClip = _root.createEmptyMovieClip("images_" + i + "", i);
	clip.loadMovie("./portfolio/" + path + "/" + i + ".jpg", "images_" + i + "");
	var clip.id:Number = i;
	clip.onRelease = function(){
		getURL("javascript:void window.open('/portfolio/" + path + "/"+this.id+".jpg', '1', 'width=187,height=290,directories=no,location=no,m enubar=no,resizable=no,scrollbars=no,status=no,toolbar=no');");
	}
}
__________________
Понять - значит упростить. Хорошо понять - сделать самому.


Последний раз редактировалось DeadMorozz; 17.08.2005 в 12:56.
Старый 17.08.2005, 13:14
serf вне форума Посмотреть профиль Отправить личное сообщение для serf Найти все сообщения от serf
  № 3  
Ответить с цитированием
serf

Регистрация: Jul 2005
Сообщений: 13
К сожелению так не работает, т.к. в первом кадре код загружает изображения, потом идет предзагрузчик, пока он их загружает и вообще не видет обработчика onRelease внутри цикла for.

Тут должен быть другой подход, но какой?

Старый 17.08.2005, 14:07
DeadMorozz вне форума Посмотреть профиль Отправить личное сообщение для DeadMorozz Найти все сообщения от DeadMorozz
  № 4  
Ответить с цитированием
DeadMorozz
 
Аватар для DeadMorozz

Регистрация: Apr 2001
Адрес: Kiev-Simferopol
Сообщений: 133
serf
код работает.
просто в нем нет смешения мувиклипа с каждой последующей загруженной фоткой. Лечится просто: если размер фоток известен, то надо каждому новому клипу давать _x+clipWidth+spacer.
__________________
Понять - значит упростить. Хорошо понять - сделать самому.


Последний раз редактировалось DeadMorozz; 17.08.2005 в 14:22.
Старый 17.08.2005, 14:56
serf вне форума Посмотреть профиль Отправить личное сообщение для serf Найти все сообщения от serf
  № 5  
Ответить с цитированием
serf

Регистрация: Jul 2005
Сообщений: 13
Не получается

Вот этот код в первом кадре:

for (i=1; i<=kol; i++)
{
_root.createEmptyMovieClip("images_" + i + "", i);
loadMovie("./portfolio/" + path + "/" + i + ".jpg", "images_" + i + "");
eval("images_" + i)._alpha = 0;
}

А вот этот код в 5-ом кадре и на 5-ом кадре мы остановились: // Который не доделанный

images_2.onRelease = function() {
name = "2.jpg";
getURL("javascript:void window.open('bigphoto.php?path=" + path + "&name=" + name + "', '1', 'width=187,height=290,directories=no,location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no');");
};


В остальных кадрах код привязан к images_[i], может возможно как-то прикрутить onRelease к примеру к массиву, что-то типа array.onRelease = {}
И дело в том что мне нужно будет определить какой именно был нажат мувик, т.к. нужо будет определить имя фотографии и ее размер.

Старый 17.08.2005, 16:48
DeadMorozz вне форума Посмотреть профиль Отправить личное сообщение для DeadMorozz Найти все сообщения от DeadMorozz
  № 6  
Ответить с цитированием
DeadMorozz
 
Аватар для DeadMorozz

Регистрация: Apr 2001
Адрес: Kiev-Simferopol
Сообщений: 133
Вот так можно передавать клип в переменную, например
Код:
var curClip:MovieClip;
clip.onRelease = function(){
   this._parent.curClip = this;
   trace("this is "+this._parent.curClip);
}
__________________
Понять - значит упростить. Хорошо понять - сделать самому.

Старый 17.08.2005, 18:43
serf вне форума Посмотреть профиль Отправить личное сообщение для serf Найти все сообщения от serf
  № 7  
Ответить с цитированием
serf

Регистрация: Jul 2005
Сообщений: 13
Все равно не работает.

Когда я размещаю этот кусок кода в 5-ом кадре
clip.onRelease = function(){
getURL("javascript:void window.open('/portfolio/" + path + "/"+this.id+".jpg', '1', 'width=187,height=290,directories=no,location=no,m enubar=no,resizable=no,scrollbars=no,status=no,too lbar=no');");

То в clip только последний мувик, и кликнуть можно только по последнему мувику,
а если этот код поместить в цикл FOR в первом кадре то вообще ничего кликнуть нельзя. Как можно сослаться на какую то одну общую переменную или может как-то можно ссылку сделать?

Старый 17.08.2005, 19:23
serf вне форума Посмотреть профиль Отправить личное сообщение для serf Найти все сообщения от serf
  № 8  
Ответить с цитированием
serf

Регистрация: Jul 2005
Сообщений: 13
Большое спасибо, все заработало.

Нужно было в 5-ом кадре сделать так:

for (i=1; i<=kol; i++)
{
eval("images_"+i).onRelease = function(){
photo_width = this._width;
photo_height = this._height;
getURL("javascript:void window.open('bigphoto.php?path=" + path + "&name=" + i + ".jpg', '" + photo_height + "', 'width=" + photo_width + ",height=" + i + ",directories=no,location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no');");

}
}

Только вот одна проблема вылезла, как получить имя фотографии, все имена числовые 1,2....n

В данном случае i получается равна последнему номеру фотографии + 1 и соответственно загружается только последняя фотография в новое окно.

Старый 17.08.2005, 23:04
Штрек вне форума Посмотреть профиль Отправить личное сообщение для Штрек Найти все сообщения от Штрек
  № 9  
Ответить с цитированием
Штрек

Регистрация: Dec 2002
Адрес: Сочи
Сообщений: 2,819
eval("images_"+i).i = i;

Старый 18.08.2005, 12:26
DeadMorozz вне форума Посмотреть профиль Отправить личное сообщение для DeadMorozz Найти все сообщения от DeadMorozz
  № 10  
Ответить с цитированием
DeadMorozz
 
Аватар для DeadMorozz

Регистрация: Apr 2001
Адрес: Kiev-Simferopol
Сообщений: 133
В данном случае i получается равна последнему номеру фотографии + 1 и соответственно загружается только последняя фотография в новое окно.
До сих пор не понимаю, в чем рульность разноса всей этой колбасы по кадрам, но проблема с последним i, в принципе, довольно стара.

Дело в том, что когда создаешь несколько клипов с экшенами по ним при проходе циклом, значение i в каждом из них равняется kol.
Борется эта бочина раздачей каждому клипу значения i в локальную переменную id.
Присмотрись к моему старому коду:
Код:
for (i=1; i<=kol; i++){
	var clip:MovieClip = _root.createEmptyMovieClip("images_" + i + "", i);
	clip.loadMovie("./portfolio/" + path + "/" + i + ".jpg", "images_" + i + "");
	var clip.id:Number = i;
	clip.onRelease = function(){
		getURL("javascript:void window.open('/portfolio/" + path + "/"+this.id+".jpg', '1', 'width=187,height=290,directories=no,location=no,m   enubar=no,resizable=no,scrollbars=no,status=no,too  lbar=no');");
	}
}
__________________
Понять - значит упростить. Хорошо понять - сделать самому.

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

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

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


 


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


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