Просмотр полной версии : Не получается достучаться до анимации кнопки меню
Светлана222
25.05.2009, 13:21
Есть меню, при наведении на кнопку которого проигрывается анимация, кнопка становится красной. Необходимо, чтоб она была красной до тех пор, пока мышь не наведётся на другую кнопку
Никак не получается сделать так, чтоб, наведении мыши на другую кнопку, проигрывалась анимация превращения первой кнопки из красной в белую, анимация есть, а достучаться до неё не получается...
ОльгаЮрьевна
25.05.2009, 15:18
у вас НИГДЕ не отрабатывается реакция на наведение (отведение и пр.) мыши - копайте в сторону:
my_mc.onRelease = function() {
// какой-либо код
}
Juice_Green
25.05.2009, 16:01
to @ОльгаЮрьевна
скорей даже .onRollOver и onRollOut
ОльгаЮрьевна
25.05.2009, 16:24
Juice_Green - так лучше?:)
but.onPress = function (){
trace ("Нажатие");
}
but.onRelease = function (){ //
trace ("отпускание мыши");
}
but.onRollOver = function (){//
trace ("наведение при отпущенной клавише мыши");
}
but.onRollOut = function (){
trace ("уход с отпущенной мышой");
}
but.onDragOut = function (){
trace ("уход с нажатой мышой");
}
but.onReleaseOutside = function (){
trace ("уход с нажатой мышой и последующим отпусканием");// ползунковый регулятор т.к. тянут не совсем за него, а где-то сбоку
}
but.onDragOver = function (){
trace ("уход с нажатой мышой и последующим возвращением, не отпуская мышь!");// при создании выпадающего меню
}
Juice_Green
25.05.2009, 20:09
to @ОльгаЮрьевна
конечно лучше :)
просто наведение и onRelease уж точно не одно и тоже!
Светлана222
26.05.2009, 14:02
Подставила этот код, всё здорово трассируется в output, подставляю свою команду
bt11.onRollOver = function() {
gotoAndPlay._root.m2.bt2.bt21("s21");
_root.m3.bt3.bt31.gotoAndPlay("s31");
}
и так и эдак - кнопки становиться белыми просто не хотят..:o
gotoAndPlay._root.m2.bt2.bt21("s21");
должно быть
_root.m2.bt2.bt21.gotoAndPlay('s21');
Я бы рекомендовал именовать объекты всеже более внятно... сами же запутаетесь.
ОльгаЮрьевна
26.05.2009, 14:10
Светлана222, вы бы словарик поизучали на предмет синтаксиса:) http://www.flash-mx.ru/help/... в файле у вас КАША! вы пишете путь, а инстансы у вас не прописаны - как-же ему понять куда идти?... сделайте заново файл с ОДНОЙ кнопкой и разберитесь, с тем что у вас сейчас работать сложно - путаница:) :)
Светлана222
26.05.2009, 14:16
там я делала и _root.m3.bt3.bt31.gotoAndPlay("s31"); и _root.m2.bt2.bt21.gotoAndPlay('s21');, всё равно не работает
А каша, потому что анимации много, я просто пытаюсь достучаться до кадра вложенного символа, с одной кнопкой не получится, мне именно нужно, чтоб другие кнопки реагировали..
Я не смотрел ваш исходик (и не буду, у меня нету Flash на этой машине) Но скорее всего проблема с именованием как вам объясняет Ольга Юрьевна.
Светлана222
26.05.2009, 14:21
я тоже так думаю, но адрес, кажется, правильный, много раз проверяла, а почему-то не могу добраться до нужного кадра
ОльгаЮрьевна
26.05.2009, 14:23
Светлана222? а ЗАЧЕМ вы ВЕСЬ код из 4 поста к себе в файл скопировали?... я вам его показала для примера! Все-таки я вам ОЧЕНЬ советую читать словарь!
... да вам не про адрес! а про Instance Name
Светлана222
26.05.2009, 14:28
скопировала, чтоб посмотреть реакцию флэшки, флэшка реагирует, я подставила свой код - не реагирует.. Instance Name, кажется, нормальные, а что не так?..
А в Flash нету Strict Mode, чтобы ругался если вызвать несуществующие свойства(в данном случае мувиклипы)?
Светлана222
26.05.2009, 14:36
кажется, нет, есть проверка синтаксиса, но он говорит: ошибок нет
ОльгаЮрьевна
26.05.2009, 14:37
вот код:
bt11.onRollOver = function() {
а инстанс у вас m1 - и так везде:(... ну практически везде... последний раз советую взять новый файл и отработать на ОДНОЙ кнопке...
Светлана222
26.05.2009, 14:52
я не поняла, почему нельзя дать имя m1, m2, m3? Ещё раз сейчас прочитала в "Flash_Actionscript_FlashMx2004_Gurskii", кажется, служебных символов я не использовала, с цифры не начинается, пробелов нет, что ещё Вы имеете в виду, что не так?
Любой идентификатор может быть образован при помощи букв произвольного регистра, цифр,
знака подчеркивания или знака доллара. Использование всех остальных служебных символов и
символов пунктуации ( – , +, @, ^, (, *, +, /,-, [ и т, д.) недопустимо, так как эти знаки зарезер-
вированы в качестве операторов и разделителей ActionScript. Также в имя не может входить
пробельный символ.
Вы когда покупали книгу Гурского, вы видели там на обложке написанно: Для Профессионалов=)
Купите что нибудь другое, Гурский во многих вещах может запутать неопытного.
Светлана222
26.05.2009, 15:09
по-моему очень интересная книга..хотя сложная.. У меня много книг на диске Macromedia Flash MX ActionScript Библия Пользователя и т. п., только сам флэш кого угодно запутать может.. После того, как Adobe им завладел, Movie Explorer перестал корректно работать, пришлось на 8 флэш вернуться.. и вообще глюков много стало..
Может, программа чего-то не понимает?.. Как ей втолковать?
У меня много книг на диске Macromedia Flash MX ActionScript Библия Пользователя и т. п.
Аааа, книжки на дисках, это как в истории:
И кто нибудь может объяснить 18ти летней русской студентке что Боб Франкс это не Мик Джаггер, возможно если бы она покупала диски а не скачивала MP3, она бы знала как выглядит Rolling Stones
Книжка очень очень интересная, там есть интересные аспекты про текстовые поля, имитацию физики и асемблеры. Но она не для новичков. Попробуйте Колина Мука или Элста.
Светлана222
26.05.2009, 15:26
а я и не новичок, в флэше я несколько лет работаю, только анимацию я лучше понимаю, чем программирование и книги для новичков я не люблю, там ещё более запутанно..
Juice_Green
26.05.2009, 15:35
Светлана222,
можно быть асом в анимации и совсем не понимать в программировании, как сообственно и наоборот :) так что "новичек"-"не новичек" - это очень спорное утверждение
Светлана222
27.05.2009, 14:02
Переименование ничего не дало.
Полностью переделала код:
Первая кнопка:
on(rollOver){
//getURL ("JavaScript:showBlock('menu_b')");
gotoAndPlay("s1");
_global.stroit3 = 1;
if (_global.oborud3 == 2 ) {
_root.oborud1.oborud2.oborud3.gotoAndPlay(21);
_global.oborud3 == 5;
}
if (_global.obsl3 == 3 ) {
_root.obsl1.obsl2.obsl3.gotoAndPlay(21);
_global.obsl3 == 6;
}
}
on(release){
gotoAndPlay("s2");
getURL("/ru/stroitelstvo.html");}
Вторая кнопка:
on(rollOver){
//getURL ("JavaScript:showBlock('menu_e')");
gotoAndPlay("s1");
_global.oborud3 = 2;
if (stroit3 == 1 ) {
_root.stroit1.stroit2.stroit3.gotoAndPlay(21);
stroit3 == 4;
}
trace(stroit3);
trace(obsl3);
trace(oborud3);
if (_global.obsl3 == 3 ) {
_root.obsl1.obsl2.obsl3.gotoAndPlay(21);
_global.obsl3 == 6;
trace(_root.obsl1.obsl2.obsl3._totalframes);
}
}
on(release){
gotoAndPlay("s2");
getURL("/ru/oborudovanie.html");}
Третья кнопка:
on(rollOver){
//getURL ("JavaScript:showBlock('menu_s')");
gotoAndPlay("s1");
_global.obsl3=3;
if (_global.stroit3 == 1 ) {
_root.stroit1.stroit2.stroit3.gotoAndPlay(21);
_global.stroit3 == 4;
}
if (_global.oborud3 == 2 ) {
_root.oborud1.oborud2.oborud3.gotoAndPlay(21);
_global.oborud3 == 5;
}
}
on(release){
gotoAndPlay("s2");
getURL("/ru/obslugivanie.html");}
на второй кнопке стоит код trace
trace(stroit3);
trace(obsl3);
trace(oborud3);
этот код показывает, что из кода второй кнопки можно добраться к коду 1-й и 3й.
При компиляции флэшки и ролловере выскакивает окно, где пишется 1,2,3 - номера, присвоенные кнопкам.
На второй кнопке же строчка trace(_root.obsl1.obsl2.obsl3._totalframes); спрашивает, сколько кадров в 3-й кнопке (должно быть 41, а флэшка не опознаёт, пишет - undefined, значит не может добраться до вложенной шкалы...)
и не пишутся номера 4,5,6, присвоенные кнопкам после выхода на белый цвет
проблема...
Может, кто знает, как добраться до вложенной шкалы stroit3, oborud3, obsl3 и дать им команду при rollOver чужой кнопки перейти на нужый кадр или метку? Причём первая кнопка реагирует почему-то на все эти команды (и не только на свои, но и на чужие!!), а остальные - нет..
ОльгаЮрьевна
27.05.2009, 14:10
давайте файл - так быстрее будет - уж больно тяжело код читать с экрана и в голове его компилить:)
Светлана222
27.05.2009, 14:13
исходник
ОльгаЮрьевна
27.05.2009, 14:55
бррр:) Светлана222 ну как-же так!
у вас вложение: _root.stroit1.stroit2.stroit3 - код написан на ТРЕТЬЕМ вложении! и что-же вы хотите?... код надо писать на stroit1 тогда, а лучше вообще не писАть код на кнопках - пишите код в первом фрейме основного стола!:)
Светлана222
27.05.2009, 15:02
это обязательно? До изменения флэшка с другими кодами работала.. Значит, чтоб флэш понял, нужно только вначале писать?
ОльгаЮрьевна
27.05.2009, 15:12
вы загружаете файл и первое что мы видим это кнопка(stroit1) - вы хотите что-бы при наведении на нее что-то происходило? я правильно поняла?... так и надо on(rollOver) на нее ставить - вы же с ней общаетесь... или задумка иная?
Светлана222
27.05.2009, 15:25
on(rollOver) есть,
но он происходит после анимации выезжания меню
и плавного появления кнопки
и он работает - происходит анимация от белого к красному.
Раньше было при on(rollOut, releaseOutside), проигрывалась анимация превращения из красного в белое,
но сейчас нужно, чтоб при on(rollOut) ничего не происходило, кнопка красная,
а при on(rollOver) на чужую кнопку все остальные проигрывали анимацию от красного к белому,
т. е. перейти на кадр 21 неактивных клипов stroit3, oborud3, obsl3
Но почему-то реагирует только первая кнопка на все эти команды (и не только на свои, но и на чужие!!), а остальные - нет.. Хотя код практически одинаковый!! только адреса разные..
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.