Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   смена фотографий по наведению и клику с запоминанием состояния по клику (http://www.flasher.ru/forum/showthread.php?t=117403)

elenaki 27.10.2008 11:42

смена фотографий по наведению и клику с запоминанием состояния по клику
 
Вложений: 1
фотки гружу динамически из 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
  }
}

ну и дальше, по потребностям.

Wolsh 27.10.2008 17:34

Вложений: 1
Ну на скорую руку вот так получилось. Может быть зря я enabled использовал, и надпись после нажатия наверно должна оставаться... Говорите, что-нибудь придумаем)

elenaki 27.10.2008 20:52

присвойте кнопке/клипу нужный вам параметр и проверяйте его при нажатии. например

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

вариант Wolsh посмотрю позже. отвечу.

scarbo 27.10.2008 22:20

Wolsh ,а зачем делать две копии фотки - одну ч/б,а другую в цвете,не проше ли ColorMatrix?

skald 27.10.2008 22:33

2scarbo это не Wolsh начал с картинками ... это у elenaki было ...
да к томуже там одним ColorMatrixом не обойдешься ... там явно еще яркость добавлена ... )))
хотя кодом решить эту проблему полюбому проще, да к томуже при смене картинок не надо будет париться ))))

Wolsh 27.10.2008 23:58

scarbo - Господа хорошие, пожалейте девушку. Дайте человеку с азами разобраться, я тоже сначала рванул фильтры импортировать)) потом смотрю в свойствах проекта вообще ActionScript 1.0 стоит))) Как при этом ещё и с XML что-то получалось - загадка для меня.
skald - а кто парится? )))))
По сравнению с загрузкой новой картинки каждый раз при наведении-уводе с неё мыши... Давайте пока забудем про фильтры. Мы можем сейчас сделать проект за elenaki, и в следующий раз она сделает те же ошибки. В чем же тогда помощь?

elenaki 28.10.2008 14:02

всем спасибо. ваирант Wolsh'a меня вполне устраивает, хотя я много в нем не понимаю. хотелось бы, чтоб надпись нажатой фотки оставалась. сейчас она пропадает. с XML работает все и в AS 1.0. тем более, что у меня не чистый XML, а построение его из PHP, но это не важно. с Флашем я не так часто работаю.

помогите, пожалуйста, сделать, чтобы надпись не пропадала после ухода. по наведению на другую фотку должна появиться ее надпись и фотка должна стать цветной. но если по ней НЕ кликнули, а ушли, то она опять становится ч/б, ее надпись пропадает, а остается надпись нажатой фотки, которая в этот момент цветная. я плохо объясняю, наверно. по клику там еще кое-какие действия происходят, вне Флаша. поэтому важно, чтобы кликнутая фотка была цветная и была видна ее надпись.

Wolsh 28.10.2008 14:25

Замените скрипт этих двух обработчиков на новый:
Код:

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");
};

А что Вам объяснить, спрашивайте не стесняйтесь)

elenaki 28.10.2008 16:40

спасибо! все работает как надо!

а непонятны мне эти enabled и вызов функции _root.pressed.onRollOut(); внутри функции thumbHolder.onPress ... запутывает.

Wolsh 28.10.2008 17:43

enabled - cвойство мувиклипа или кнопки. Если true - клип слушает кнопочные события (ролловер и тп), если false - он никак на мышь не реагирует.
в _root.pressed сохраняется ссылка на последний нажатый клип. Т.е. каждый клип при нажатии на него сначала выполняет разные действия, в том числе "освобождает" предыдущий нажатый, а потом записывает себя в эту переменную. Таким образом мы всегда знаем, какая кнопка сейчас в нажатом состоянии, нам не надо просматривать их все и считывать какойто флаг типа "да, это я нажатая")))

elenaki 28.10.2008 18:29

а. понятно. спасибо еще раз. :)

PS там был небольшой баг. если ни одна фотка не нажата, то по наведению как и надо появлялось ее название,
а по уходу на пустое место возникала надпись "undefined". но с этим я справилась.


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

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