Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Логика: Как сохранить предыдущее значение изменяющейся переменной ? (http://www.flasher.ru/forum/showthread.php?t=127934)

Аллиас 26.07.2009 04:26

Логика: Как сохранить предыдущее значение изменяющейся переменной ?
 
Здравствуйте. Такая ситуация:

Существует переменная, значение которой постоянно изменяется. Необходимо каждый раз запоминать ее предыдущее значение в другой переменной...

Если подробнее, то существует текстовое поле, которое слушает событие MOUSE_MOVE. Функция обработчик, возвращает индекс символа в поле, если символ есть под курсором мыши.

Проблема в том, что в моем случае возвращение значения происходит постоянно, а мне необходимо, чтобы индекс каждого символа, пока курсор над ним, возвращался только один раз.

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

Gaen 26.07.2009 04:44

1. ловим MOUSE_MOVE, получаем индекс символа под мышью (или null)
2. сравниваем с ранее записанным индексом
3. если равны - ничего не делаем, если не равны - сохраняем индекс и возвращаем его

Аллиас 26.07.2009 13:35

Цитата:

Сообщение от GAIKER
1. ловим MOUSE_MOVE, получаем индекс символа под мышью (или null)
2. сравниваем с ранее записанным индексом
3. если равны - ничего не делаем, если не равны - сохраняем индекс и возвращаем его

Вот это то я как раз прекрасно понимаю, мне не понятно как именно сохранить предыдущий индекс.

udaaff 26.07.2009 15:25

Код AS3:

package
{
        import flash.display.Sprite;
        import flash.events.MouseEvent;
        import flash.text.TextField;
        import flash.text.TextFieldAutoSize;
 
        public class Main extends Sprite
        {
                public function Main()
                {
                        super();
 
                        createChilden();
                }
 
                private var textField:TextField;
 
                private var lastIndex:int;
 
                private function textField_mouseMoveHandler(event:MouseEvent):void
                {
                        var currentIndex:int = textField.getCharIndexAtPoint(textField.mouseX, textField.mouseY);
 
                        if (lastIndex != currentIndex)
                        {
                                lastIndex = currentIndex;
 
                                trace(lastIndex);
                        }
 
                }
 
                private function createChilden():void
                {
                        textField = new TextField();
                        textField.text = "some text asdfasdfasdfasdfasdfasdfasdfasdfasdf";
                        textField.autoSize = TextFieldAutoSize.LEFT;
                        textField.border = true;
                        addChild(textField);
 
                        textField.addEventListener(MouseEvent.MOUSE_MOVE, textField_mouseMoveHandler);
                }
        }
}


Аллиас 26.07.2009 15:44

udaaff,

Спасибо большое!


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

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