Форум 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=116373)

mars9n9 28.09.2008 18:39

кнопка с несколькими состояниями
 
Подскажите пожалуйста, как создать кнопку с несколькими состояниями. Т.е. такую, что нажимаешь на нее, меняется картинка и значение переменной, нажимаешь еще раз - опять меняется картинка на кнопке и значение переменной и т.д.

Mur4ik 28.09.2008 19:18

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

mars9n9 29.09.2008 21:54

спасибо :) все получилось

dimarik 30.09.2008 00:10

Не забывайте о "волшебных", а иначе не скажешь словах: Крекс (_up), Пекс (_over) и Фекс (_down). См. пункт help'a Flash "Learning ActionScript 2.0 in Adobe Flash > Handling Events > Creating movie clips with button states"

mars9n9 30.09.2008 01:29

Возникла такая проблема:

Я создала 10 кнопок (тупым копированием), закинула их в массив.
Код:

var but1:Array = new Array(10);
for (var i = 0; i<10; i++) {
        but1[i] = eval("but_1"+i);
       
}

потом написала код для нажатия на кнопку
Код:

for (var i = 0; i<10; i++) {
but1[i].onPress = PressHandler(i);
}

function PressHandler(i:Number):Void {
        if (option[i] == 4) {
                but1[i].gotoAndStop(1);
                option[i] = 1;
        } else {
                option[i]++;
                but1[i].gotoAndStop(option[i]);
                }
}

для одной кнопки, без цикла for все прекрасно работает, а с циклом нет. Подскажите плиз, что я неправильно делаю

dimarik 30.09.2008 01:36

1. but1[i] = eval("but_1"+i); лучше заменить на this["but_1"+i];
2. but1[i].onPress = PressHandler(i); Вы пытаетесь ссылку на функу заменить её вызовом.

Правильнее было бы сделать but1[i].onPress = PressHandler;


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

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