PDA

Просмотр полной версии : переход на другой кадр с помощью Enter


Ugodniki
12.09.2012, 13:08
Здравствуйте!
Суть дела: есть кадр, на нем расположены 4 радио-кнопки (rad1, rad2, rad3, rad4) и одна обычная кнопка(dalshe), по которой происходит переход на следующий кадр, с учетом того какая из радио-кнопок выделена.
Переход на следующий кадр может происходить как с помощью нажатия(dalshe), так и с помощью нажатия кнопки ENTER.
Проблема: когда не отмечен ни один radio-button, при нажатии кнопки ENTER происходит какая-то быстрая смена кадров, что неверно. По идее если не активна ни одна радио-кнопка, то я ловлю ошибку. В общем enter в таком случае не работает. Помогите пожалуйста решить проблему. Если я просто кликаю на кнопку на кадре (dalshe), то все отлично и все работает.

Код, того что стоит на кадре и реагирует на Enter при любой активной радио-кнопке:
var kl:Object = new Object();

kl.onKeyDown = function ()
{
if (Key.getCode() == Key.ENTER)
{
trace("Зашли в функцию кнопки ЕНТЕР");
if(rad1.selected== false && rad2.selected== false && rad3.selected== false && rad4.selected== false)
{
muv1._alpha = 100;
dalshe.enabled = false;
}
else
{
if(rad2.selected == true)
{
_global.prav3+=1;
trace("все правильно выбрали");
}
else
{
trace("неправильно выбрали");
}
gotoAndStop(7);
}
}
};

rad1.onSetFocus = function ()
{
Key.addListener(kl);
};
rad2.onSetFocus = function ()
{
Key.addListener(kl);
};
rad3.onSetFocus = function ()
{
Key.addListener(kl);
};
rad4.onSetFocus = function ()
{
Key.addListener(kl);
};

dark256
12.09.2012, 13:18
Непонятно что у вас там вообще.
Радио-кнопка должна быть включена ТОЛЬКО одна...
Где сброс выбранных прочих?
Зачем через ФОКУС, а не через нажатие?

Радио-кнопки у вас написаны непонятно через что и зачем...

Ugodniki
12.09.2012, 13:51
со сбросом ступила уже столкнулась с этим и добавилось к коду
rad1.onKillFocus = function ()
{
Key.removeListener(k5);
};

rad2.onKillFocus = function ()
{
Key.removeListener(k5);
};

rad3.onKillFocus = function ()
{
Key.removeListener(k5);
};

rad4.onKillFocus = function ()
{
Key.removeListener(k5);
};

подскажите как это делать через нажатие??
радио-кнопки добавляла через панель components. Зачем они нужны? кадр представляет собой страницу теста, отвечая на вопрос пользователь кликает на какую-нибудь радио-кнопку, а затем с помощью enter переходит к следующему вопросу(т.е. к следующему кадру)

dark256
12.09.2012, 14:18
Проще свои кнопки написать.

function initRadio( mov, actual, ARR, func ){
mov.activeId = actual;
for ( var i=0; i<ARR.length; i++){
var rad = mov["BR"+i]
rad.caps.text = ARR[i]
rad.id = i;
rad.pad.onRelease = function(){
mov.activeId = this._parent.id
func( mov.activeId )
mov.setRadio()
}
}
mov.setRadio = function( force ){
if ( force != undefined ) this.activeId = force;
for ( var i=0; i<ARR.length; i++){
this["BR"+i].SEL._visible = false
}
this["BR"+this.activeId].SEL._visible = true
}
mov.setRadio()
func( mov.activeId )
}

Ugodniki
12.09.2012, 14:32
спасибо. Честно говоря я ещё новичок, поэтому ваш код неочень понятен, сижу и втыкаю

dark256
12.09.2012, 14:39
Делаешь клип.
В нем два клипа с названием SEL - это типа отметка радиокнопки, внутр. часть и pad - это низлежащий клип, который обрабатывает нажатия.

Рисуешь нужное кол-во кнопок и называешь их BR1, BR2 и так далее
ARR - массив с подписями к кнопкам.
Типа

var teamNumberArr:Array = new Array()
teamNumberArr[0] = "Нет номера"
teamNumberArr[1] = "Командные номера"
teamNumberArr[2] = "Большой номер"
teamNumberArr[3] = "Маленький номер"

mov - это то, где радио кнопки лежат