Форум 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)
-   -   переход на другой кадр с помощью Enter (http://www.flasher.ru/forum/showthread.php?t=184159)

Ugodniki 12.09.2012 13:08

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

Код, того что стоит на кадре и реагирует на Enter при любой активной радио-кнопке:
Код AS1/AS2:

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

со сбросом ступила уже столкнулась с этим и добавилось к коду
Код AS1/AS2:

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

Проще свои кнопки написать.

Код AS1/AS2:

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

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

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

Код:

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

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


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

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