PDA

Просмотр полной версии : кнопка с несколькими состояниями


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;