Форум 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)
-   -   кнопка на 2 действия (http://www.flasher.ru/forum/showthread.php?t=118730)

st0rk 02.12.2008 16:13

кнопка на 2 действия
 
Как сделать чтобы кнопка выполняла роль и ВКЛ и ОТКЛ. Допустим - по ВКЛ у меня муви клип меняет прозрачность и изменяет цвет другого мувиклипа, а когда я еще раз на нее нажму (это типа откл) то ничего не должно с первым мувиклипом происходить он так и должен оставаться прозрачным, а должна обрабатываться просто функция кнопки на обработку второго мувиклипа тоесть изменить цвет обратно.

lexa2000lexa 02.12.2008 16:21

Стаавте флаг при первом нажатии , и проверяйте флаг.

st0rk 02.12.2008 16:27

опа, а можна поподробнее, я новичок совсем :(

lexa2000lexa 02.12.2008 16:50

Примерно так , если я вкрно понял что вам нужно
Код AS1/AS2:

but.onPress = function(){
        if(!this.flag){
                trace("1")
                }
                else{
                        trace("2")
                        }
        this.flag = !this.flag;
}


st0rk 02.12.2008 17:11

вместо trace("1") и trace("2") код которым у меня что-то делается? да?

lexa2000lexa 02.12.2008 17:46

именно так.

st0rk 02.12.2008 18:58

ну это проверка на флаг, а как его поставить и где?
или только этот код и больше ничего не нужно? О_О

artem_fs 02.12.2008 19:04

это проверка на true или false. ставить его никуда не надо.

st0rk 05.12.2008 13:42

ну у меня это выглядит так:
Код AS1/AS2:

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

вот эту строчку
Код AS1/AS2:

this.flag = !this.flag;

вынесете из под else и все заработает

nOobCrafter 08.12.2008 14:07

Ммм а у меня вопрос, у меня допустим код для открытия суб менюшек, то есть нажал на кнопку - менюшка выехала, нажал еще раз и она заехала, тут хорошо, но допустим мы 1 раз нажали на кнопку, менюшку выехала, а потом нажалии ну абсолютно другую кнопку в той же менюшке, субменюшка закрылась, но кнопке то присвоен флаг this.flag = !this.flag; и при повторном нажатии на нее ничего не происходит, так как происходит действие закрытия менюшки (хотя она давно закрыта). Тогда на другую кнопку вешаем код
Код AS1/AS2:

but2.onPress = function(){
        trace("сработка + закрытие всех других субменю")
        _root.but1.flag = !_root.but1.flag;
}

Но тут соответственно другой косяк, если менюшка свернута и нажать сразу на but2, а потом на but1 то менюшка опять же не выезжает. Как это пофиксить, мне кажеться что флаги тут не совсем подходят?
Код AS1/AS2:

but1.onPress = function(){
        if(!this.flag){
                trace("субменю выезжает")
                }
                else{
                        trace("субменю убирается")
                        }
        this.flag = !this.flag;
}
 
but2.onPress = function(){
        trace("сработка + закрытие всех других субменю")
        _root.but1.flag = !_root.but1.flag;
}


iNils 08.12.2008 14:25

Надо перейти к глобальной модели обработки нажатий. То есть, вместо того, чтобы писать по 100 функций onPress для каждой кнопки, все onPress ссылаются на одну глобальную функцию с помощью класса Delegate который умеет передавать параметры (ссылка на нажавшую кнопку или ее id)

nOobCrafter 08.12.2008 14:47

Ооооххх...О_о...что то мне страшно становится от такого кол-ва непонятного мне кода..%)
У меня всего то 3 кнопки, может можно как нить попроще юзануть св-ва кнопки допустим что то типа такого:
Код AS1/AS2:

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 все ок.

st0rk 08.12.2008 15:58

а как быть если у меня 5 кнопок и они должны нажиматься строго в последовательности (например 1,3,5,4,2,3,5,1,4 -это правильно иначе неправильно!
и нажатие на одну и туже кнопку может повторяться но они делают разные действия)??
как сделать такое?

iNils 08.12.2008 16:07

Создать массив образец. При вводе цифр, добавлять их в другой массив (со удалением лишних цифр), который сравнивать с образцом.

nOobCrafter 08.12.2008 16:11

Цитата:

и нажатие на одну и туже кнопку может повторяться но они делают разные действия)??
Это разбиралось тут же но чуть раньше, читай тему с начала, просто назначаем флаги кнопкам.
Цитата:

а как быть если у меня 5 кнопок и они должны нажиматься строго в последовательности (например 1,3,5,4,2,3,5,1,4 -это правильно иначе неправильно!
Могу предположить что нужно при нажатии определенной кнопки добавлять ее номер в строку, а в конце сравнивать полученную строку с правильной.

st0rk 08.12.2008 17:36

ничего себе... подскажите хотябы примерно как это должно выглядеть на AS, а то сижу сейчас с очень круглыми от удивления глазами...

nOobCrafter 09.12.2008 14:27

Всегда любил генную инженерию, хоть и говорят что это бяка, но иногда бывает прикольной, решил скрестить ужа и ежа, и в итоге получил требуемый результат малой (как мне кажеться) кровью. Итак код ф студию:
Код AS1/AS2:

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


st0rk 11.12.2008 13:31

подскажите с кнопками плз, на Вас только вся надежда, ума не приложу как это сделать....

nOobCrafter 18.12.2008 17:15

Вложений: 1
ОТ блин, столкнулся с очередной пролемой. Кнопок теперь произвольное число, создаются в цикле и их имена содержатся в массиве. Как можно отследить была ли нажата именно эта кнопка. Или же надо как и говорил тов. iNils:
Цитата:

Надо перейти к глобальной модели обработки нажатий.
Просто может еще есть вариант "попроще\попонятнее" а то что в том классе и как его использовать непонял совсем.


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

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