Просмотр полной версии : Как определить по какому 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) кликнули?
За ранее благодарен
DeadMorozz
17.08.2005, 12:43
Кажется, вот так должно работать.
Ты просто циклом делаешь клипы - и на каждый, не отходя от кассы, вешаешь свой экшен. Но, заметь, это просто пример кода - в реальной разработке надо все эти созданные клипы еще как-то размещать на опредеденном расстоянии друг от друга, но нет никакой информации о том, как они будут выкладываться.
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');");
}
}
К сожелению так не работает, т.к. в первом кадре код загружает изображения, потом идет предзагрузчик, пока он их загружает и вообще не видет обработчика onRelease внутри цикла for.
Тут должен быть другой подход, но какой?
DeadMorozz
17.08.2005, 14:07
serf
код работает.
просто в нем нет смешения мувиклипа с каждой последующей загруженной фоткой. Лечится просто: если размер фоток известен, то надо каждому новому клипу давать _x+clipWidth+spacer.
Не получается
Вот этот код в первом кадре:
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 = {}
И дело в том что мне нужно будет определить какой именно был нажат мувик, т.к. нужо будет определить имя фотографии и ее размер.
DeadMorozz
17.08.2005, 16:48
Вот так можно передавать клип в переменную, например ;)
var curClip:MovieClip;
clip.onRelease = function(){
this._parent.curClip = this;
trace("this is "+this._parent.curClip);
}
Все равно не работает.
Когда я размещаю этот кусок кода в 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 в первом кадре то вообще ничего кликнуть нельзя. Как можно сослаться на какую то одну общую переменную или может как-то можно ссылку сделать?
Большое спасибо, все заработало.
Нужно было в 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 и соответственно загружается только последняя фотография в новое окно.
DeadMorozz
18.08.2005, 12:26
В данном случае 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');");
}
}
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.