Просмотр полной версии : кнопка на 2 действия
Как сделать чтобы кнопка выполняла роль и ВКЛ и ОТКЛ. Допустим - по ВКЛ у меня муви клип меняет прозрачность и изменяет цвет другого мувиклипа, а когда я еще раз на нее нажму (это типа откл) то ничего не должно с первым мувиклипом происходить он так и должен оставаться прозрачным, а должна обрабатываться просто функция кнопки на обработку второго мувиклипа тоесть изменить цвет обратно.
lexa2000lexa
02.12.2008, 16:21
Стаавте флаг при первом нажатии , и проверяйте флаг.
опа, а можна поподробнее, я новичок совсем :(
lexa2000lexa
02.12.2008, 16:50
Примерно так , если я вкрно понял что вам нужноbut.onPress = function(){
if(!this.flag){
trace("1")
}
else{
trace("2")
}
this.flag = !this.flag;
}
вместо trace("1") и trace("2") код которым у меня что-то делается? да?
lexa2000lexa
02.12.2008, 17:46
именно так.
ну это проверка на флаг, а как его поставить и где?
или только этот код и больше ничего не нужно? О_О
artem_fs
02.12.2008, 19:04
это проверка на true или false. ставить его никуда не надо.
ну у меня это выглядит так:
oborot_btn.onPress = function(){
if(!this.flag){
var tween1:Tween = new Tween(s7_mc, "_alpha", None.easeNone, 100, 0, 1, true);
}
else{
trace ("fuck")
this.flag = !this.flag;
}
}
когда жму кнопку - срабатывает tween , когда еще раз ее жму else не работает, тоесть trace не вижу. что я не так делаю?
lexa2000lexa
05.12.2008, 13:49
вот эту строчку this.flag = !this.flag;
вынесете из под else и все заработает
nOobCrafter
08.12.2008, 14:07
Ммм а у меня вопрос, у меня допустим код для открытия суб менюшек, то есть нажал на кнопку - менюшка выехала, нажал еще раз и она заехала, тут хорошо, но допустим мы 1 раз нажали на кнопку, менюшку выехала, а потом нажалии ну абсолютно другую кнопку в той же менюшке, субменюшка закрылась, но кнопке то присвоен флаг this.flag = !this.flag; и при повторном нажатии на нее ничего не происходит, так как происходит действие закрытия менюшки (хотя она давно закрыта). Тогда на другую кнопку вешаем код
but2.onPress = function(){
trace("сработка + закрытие всех других субменю")
_root.but1.flag = !_root.but1.flag;
}
Но тут соответственно другой косяк, если менюшка свернута и нажать сразу на but2, а потом на but1 то менюшка опять же не выезжает. Как это пофиксить, мне кажеться что флаги тут не совсем подходят?
but1.onPress = function(){
if(!this.flag){
trace("субменю выезжает")
}
else{
trace("субменю убирается")
}
this.flag = !this.flag;
}
but2.onPress = function(){
trace("сработка + закрытие всех других субменю")
_root.but1.flag = !_root.but1.flag;
}
Надо перейти к глобальной модели обработки нажатий. То есть, вместо того, чтобы писать по 100 функций onPress для каждой кнопки, все onPress ссылаются на одну глобальную функцию с помощью класса Delegate (http://www.flasher.ru/forum/showpost.php?p=717938&postcount=4) который умеет передавать параметры (ссылка на нажавшую кнопку или ее id)
nOobCrafter
08.12.2008, 14:47
Ооооххх...О_о...что то мне страшно становится от такого кол-ва непонятного мне кода..%)
У меня всего то 3 кнопки, может можно как нить попроще юзануть св-ва кнопки допустим что то типа такого:
but1.mark = 1;
bit2.onRelease = function() { // ГЛАВНАЯ
but1.mark = 1;
}
but1.onRelease = function() {
trace(but1.mark)
but1.play();
if(but1.mark = 1)
{
but1.mark = 2;
}
else
{
but1.mark = 1;
}
Но здесь фигня выходит, после повторного нажатия на but1 сво-во mark не принмиает значение 1, а все время равно 2м(( все нажатии на but2 все ок.
а как быть если у меня 5 кнопок и они должны нажиматься строго в последовательности (например 1,3,5,4,2,3,5,1,4 -это правильно иначе неправильно!
и нажатие на одну и туже кнопку может повторяться но они делают разные действия)??
как сделать такое?
Создать массив образец. При вводе цифр, добавлять их в другой массив (со удалением лишних цифр), который сравнивать с образцом.
nOobCrafter
08.12.2008, 16:11
и нажатие на одну и туже кнопку может повторяться но они делают разные действия)??
Это разбиралось тут же но чуть раньше, читай тему с начала, просто назначаем флаги кнопкам.
а как быть если у меня 5 кнопок и они должны нажиматься строго в последовательности (например 1,3,5,4,2,3,5,1,4 -это правильно иначе неправильно!
Могу предположить что нужно при нажатии определенной кнопки добавлять ее номер в строку, а в конце сравнивать полученную строку с правильной.
ничего себе... подскажите хотябы примерно как это должно выглядеть на AS, а то сижу сейчас с очень круглыми от удивления глазами...
nOobCrafter
09.12.2008, 14:27
Всегда любил генную инженерию, хоть и говорят что это бяка, но иногда бывает прикольной, решил скрестить ужа и ежа, и в итоге получил требуемый результат малой (как мне кажеться) кровью. Итак код ф студию:
var but_press1:Boolean;
but_press1 = true;
but2.onRelease = function() {
but_press1 = true;
}
but1.onRelease = function() {
if (but_press1)
{
this.flag = true;
}
else
{
this.flag = !this.flag;
}
if(this.flag)
{
trace(Меню выдвинулось)
}
else
{
trace(Меню задвинулось)
}
but_press1 = false;
}
подскажите с кнопками плз, на Вас только вся надежда, ума не приложу как это сделать....
nOobCrafter
18.12.2008, 17:15
ОТ блин, столкнулся с очередной пролемой. Кнопок теперь произвольное число, создаются в цикле и их имена содержатся в массиве. Как можно отследить была ли нажата именно эта кнопка. Или же надо как и говорил тов. iNils:
Надо перейти к глобальной модели обработки нажатий.
Просто может еще есть вариант "попроще\попонятнее" а то что в том классе и как его использовать непонял совсем.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.