Форум 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)
-   -   Почему при инициализации Textfild`а AsBroadcaster`ом перестает работать onChanged (http://www.flasher.ru/forum/showthread.php?t=107463)

GFreemen 01.02.2008 23:26

Почему при инициализации Textfild`а AsBroadcaster`ом перестает работать onChanged
 
Еще раз здрасти.
Идея такая - когда поле в фокусе, подписываем его на события клавиатуры, потом при нажатии ентер (когда поле в фокусе) генерируем событие для onPress для клипа кнопки.
Т.е. по-русски - на клип-кнопку можно нажать двумя способами - 1) собственно мышкой и 2) при выделенном Текстовом поле - клавишей Ентер
Код:

        //cоздаем текстовое поле для ввода в него маркировки
        _root.load_window.poisk_fon.createTextField("pole_input",_root.load_window.poisk_fon.getNextHighestDepth(),230,5,130,24);
        _root.load_window.poisk_fon.pole_input.border = true;
        _root.load_window.poisk_fon.pole_input.type = "input";
       
        _root.load_window.poisk_fon.pole_input.onChanged=function(){
                trace("Не печатается");
                _root.load_window.poisk_fon.pole_input.text=_root.load_window.poisk_fon.pole_input.text.toUpperCase();
        }
       
        //добавляем кнопку Искать
        _root.load_window.poisk_fon.attachMovie("naiti_btn","naiti_btn",_root.load_window.poisk_fon.getNextHighestDepth(),{_x:370,_y:5});
       
        //по событию Сфокусирования на pole_input делаем pole_input листенером(слушателем) объекта Key
        _root.load_window.poisk_fon.pole_input.onSetFocus=function(){
                //делаем naiti_btn кнопку листенером объекта Key
                Key.addListener(_root.load_window.poisk_fon.pole_input);
        }
        //по событию РАЗфокусирования на pole_input удаляем pole_input из списка листенеров(слушателей) объекта Key
        _root.load_window.poisk_fon.pole_input.onKillFocus=function(){
                //удаляем naiti_btn кнопку из списка листенеров объекта Key
                Key.removeListener(_root.load_window.poisk_fon.pole_input);
        }
        AsBroadcaster.initialize (_root.load_window.poisk_fon.pole_input);//почему-то если инициализировать как генератор событий текстовое поле _root.load_window.poisk_fon.pole_input, то на это поле не работает событие onChanged
        _root.load_window.poisk_fon.pole_input.addListener(_root.load_window.poisk_fon.naiti_btn);
        //По событию Key.ENTER генерируем событие onPress для кнопки naiti_btn
        _root.load_window.poisk_fon.pole_input.onKeyDown = function(){
                if (Key.isDown(Key.ENTER)) {
                    _root.load_window.poisk_fon.pole_input.broadcastMessage("onPress");
                  }
        }
        _root.load_window.poisk_fon.naiti_btn.onPress=function(){
                trace("onPressed");
        }

Так вот, в чем вопрос
Почему при инициализации как генератора событий текстового поля (строка AsBroadcaster.initialize (_root.load_window.poisk_fon.pole_input);) - на этом текстовом поле перестает работать onChanged?
Если же сделать генератором события какой-нить другой объект, то все Ок.

Molecula 02.02.2008 04:22

А чем Вам такой вариант не угодил?
На сцене Инпутфилд tt и мувик mc.
Код:

mc.onPress=callMc;
tt.onSetFocus = setFocus;
function setFocus() {setKey()};
function setKey(){
        this.onKeyDown = keyPressed;
    Key.addListener(this);}
function keyPressed() {
    switch (Key.getCode()) {
                case Key.ENTER:
                Selection.setFocus(null);
                callMc();
                break;
                default:
                trace('another function');
        }
}
function callMc(){trace('MC pressed')}


GFreemen 02.02.2008 16:57

Ну, на самом деле, вариантов решения как это сделать очень много. Вопрос же в другом, почему перестает срабатывать onCanged? Где баг - в голове или во Флеше...


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

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