Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Web-дизайн 1 часть / Литература / ActionScript 2.0. Программирование во Flash MX 2004.pdf
Скачиваний:
354
Добавлен:
26.03.2015
Размер:
8.81 Mб
Скачать

return;

// Если строка была найдена, выделяем ее и переопределяем n } else {

st_text.setSelected(n, n+search_string.text.length, true); n += search_string.text.length;

}

}

}; // Код, удаляющий выделение

clear.onPress = function():Void {

if (st_text.getSelected(0, st_text.getCount())) { st_text.setSelected(0, st_text.getCount() , false);

}

};

13.14.5. Определение ближайшего к точке символа статичного текста

В случае статичного текста можно чрезвычайно просто определить, какому символу принадлежит данная точка (или какой символ является к ней ближайшим). Для этого предназначен метод hitTestTextNearPos() класса TextSnapshot. Его синтаксис:

hitTestTextNearPos(x, у, maxDistance),

где:

х и у — координаты точки, ближайший к которой символ нас интересует. Должны быть заданы в системе координат того клипа, которому принадлежит соответствующий статичный текст;

maxDistance – максимальное расстояние, которое может разделять символ и точку, чтобы ме-

тод hitTestTextNearPos() посчитал их достаточно близкими для возврата конкретного результата. По умолчанию данный параметр равен 0. Это означает, что точка считается близкой к символу лишь в том случае, если она лежит в пределах ограничивающей его рамки.

Метод hitTestTextNearPos() проверяет, какой символ статичного текста расположен к точке ближе всего. Если расстояние до этого символа не превышает заданного лимита, возвращается его индекс в соответствующей статичному тексту строке, хранимой объектами класса TextSnapshot. Если клип не содержит статичных полей или расстояние до ближайшего символа больше maxDistance, возвращается —1.

Метод hitTestTextNearPos() можно использовать для реализации разного рода эффектов. Тем более, что определить, к какому символу принадлежит точка, в случае динамических полей можно лишь приблизительно. Типичнейшей же задачей, решить которую позволяет рассматриваемый метод, является реализация возможности выделения фрагмента статичного текста при помощи курсора мыши. Например:

//Создайте статичное поле с относительно объемным фрагментом текста var st_text:TextSnapshot = this.getTextSnapshot();

var index:Number = -1;

//При нажатии левой кнопки мыши удаляем старое выделение и фиксируем,

//по какому символу произошел щелчок

this.onMouseDown = function():Void { st_text.setSelected(0, st_text.getCount(), false); index = st_text.hitTestTextNearPos(_xmouse, _ymouse);

};

//При движении указателя мыши проверяем, нужно ли рисовать выделение

//(об этом говорит значение переменной index). Если да, то создаем его от

//символа, нал которым произошло опускание левой клавиши мыши, до символа,

//над которым указатель располагается в данный момент.

this.onMouseMove = function():Void { if (index!= -1) {

st_text.setSelected(0, st_text.getCount(), false);

var index_2:Number = st_text.hitTestTextNearPos(_xmouse, _ymouse.1000);

Соседние файлы в папке Литература