Просмотр полной версии : смена фотографий по наведению и клику с запоминанием состояния по клику
фотки гружу динамически из XML. каждая фотка - мувик. мувику прописываю кое-какие
действия по наведению, уходу, клику. все получается, кроме запоминания состояния
нажатия. например, по наведению на ч/б фотку она должна становиться цветной, по клику
на ней - цветной и запомнить это состояние, по уходу с фотки не менять ее на ч/б как если
бы она была ненажатая. я такое делала, но тогда у меня все мувики были сразу на сцене, со
своими именами. я ввела переменную clicked и меняла ее значение по клику. а при обращении
к мувику проверяла, если его clicked=true, то не надо менять на ч/б. а вот с динамическими
мувиками так не получается. может, я неправильно их подгружаю? причем, если мышь уходит
с фотки на пустое место, то она остается цветной (если на нее нажали предварительно), а
если на другую фотку - то становится ч/б. а хотелось бы, чтоб нажатая фотка всегда была
цветной до тех пор, пока не нажали на другую. . в аттаче - .fla, .xml и 4 фотки. спасибо.
Infectedcell
27.10.2008, 15:55
Самый простой вариант:
присвойте кнопке/клипу нужный вам параметр и проверяйте его при нажатии. например
var but:MovieClip = this.createEmptyMovieClip('lol',1)
but.status = false;
but.onRelease = function() {
if (this.status!=false){
this.status=false;
// do something
}else{
this.status=true;
// do something
}
}
ну и дальше, по потребностям.
Ну на скорую руку вот так получилось. Может быть зря я enabled использовал, и надпись после нажатия наверно должна оставаться... Говорите, что-нибудь придумаем)
присвойте кнопке/клипу нужный вам параметр и проверяйте его при нажатии. например
я так и делала. но при заходе на следующую фотку эти переменные становились снова false. мне кажется, при загрузке новой фотки, теряется старый мувик...
вариант Wolsh посмотрю позже. отвечу.
Wolsh ,а зачем делать две копии фотки - одну ч/б,а другую в цвете,не проше ли ColorMatrix?
2scarbo это не Wolsh начал с картинками ... это у elenaki было ...
да к томуже там одним ColorMatrixом не обойдешься ... там явно еще яркость добавлена ... )))
хотя кодом решить эту проблему полюбому проще, да к томуже при смене картинок не надо будет париться ))))
scarbo - Господа хорошие, пожалейте девушку. Дайте человеку с азами разобраться, я тоже сначала рванул фильтры импортировать)) потом смотрю в свойствах проекта вообще ActionScript 1.0 стоит))) Как при этом ещё и с XML что-то получалось - загадка для меня.
skald - а кто парится? )))))
По сравнению с загрузкой новой картинки каждый раз при наведении-уводе с неё мыши... Давайте пока забудем про фильтры. Мы можем сейчас сделать проект за elenaki, и в следующий раз она сделает те же ошибки. В чем же тогда помощь?
всем спасибо. ваирант Wolsh'a меня вполне устраивает, хотя я много в нем не понимаю. хотелось бы, чтоб надпись нажатой фотки оставалась. сейчас она пропадает. с XML работает все и в AS 1.0. тем более, что у меня не чистый XML, а построение его из PHP, но это не важно. с Флашем я не так часто работаю.
помогите, пожалуйста, сделать, чтобы надпись не пропадала после ухода. по наведению на другую фотку должна появиться ее надпись и фотка должна стать цветной. но если по ней НЕ кликнули, а ушли, то она опять становится ч/б, ее надпись пропадает, а остается надпись нажатой фотки, которая в этот момент цветная. я плохо объясняю, наверно. по клику там еще кое-какие действия происходят, вне Флаша. поэтому важно, чтобы кликнутая фотка была цветная и была видна ее надпись.
Замените скрипт этих двух обработчиков на новый:
thumbHolder.onRollOut = function() {
title_txt.text = _root.pressed.title;
this.grey_image.onEnterFrame = function() {
if ((this._alpha += 10)>=100) {
delete this.onEnterFrame;
}
};
};
// Устанавливаем обработчик событий нажатия на кнопку
thumbHolder.onPress = function() {
_root.pressed.enabled = true;
_root.pressed.onRollOut();
title_txt.text = this.title;
this.enabled = false;
_root.pressed = this;
getURL("javascript: changePhoto("+cat+","+(this.count+1)+",1,"+this.kol+")", "_self");
};
А что Вам объяснить, спрашивайте не стесняйтесь)
спасибо! все работает как надо!
а непонятны мне эти enabled и вызов функции _root.pressed.onRollOut(); внутри функции thumbHolder.onPress ... запутывает.
enabled - cвойство мувиклипа или кнопки. Если true - клип слушает кнопочные события (ролловер и тп), если false - он никак на мышь не реагирует.
в _root.pressed сохраняется ссылка на последний нажатый клип. Т.е. каждый клип при нажатии на него сначала выполняет разные действия, в том числе "освобождает" предыдущий нажатый, а потом записывает себя в эту переменную. Таким образом мы всегда знаем, какая кнопка сейчас в нажатом состоянии, нам не надо просматривать их все и считывать какойто флаг типа "да, это я нажатая")))
а. понятно. спасибо еще раз. :)
PS там был небольшой баг. если ни одна фотка не нажата, то по наведению как и надо появлялось ее название,
а по уходу на пустое место возникала надпись "undefined". но с этим я справилась.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.