Копирование текста в буфер обмена

Мы уже не раз отмечали, что программное выделение статичного текста — это выделение не совсем настоящее. Основным его недостатком является то, что выделенный текст нельзя скопировать в буфер обмена нажатием + или активизацией соответствующей команды контекстного меню (которой в принципе нет). Однако при желании данный недостаток можно преодолеть. Дело в том, что в ActionScript имеется метод System.setClipboard(), позволяющий скопировать текст в буфер обмена операционной системы. Текст передается данному методу в виде параметра. Если буфер обмена не был свободен, его содержимое будет заменено. В случае успешности копирования текста в буфер метод setClipboard() возвращает true. Если же провести операцию не удастся, результатом будет false.

В качестве примера использования метода setClipboard() мы дополним код так, чтобы выделенный текст можно было скопировать в буфер обмена нажатием сочетания + <С> и командой контекстного меню:

// Код, копирующий выделенный текст при нажатии сочетания +
fscommand("trapallkeys", "true"); // Отключаем поддержку горячих клавиш
Key.addListener(this);
this.onKeyDown = function():Void {
if (Key.isDown(17) && Key.isDown(67) && st_text.getSelected(0,
st_text.getCount())) {
System.setClipboard(st_text.getSelectedText());
// Код команды контекстного меню
var cont_menu:ContextMenu = new ContextMenu(activ);
this.menu = cont_menu;
var copy_command:ContextMenuItem = new ContextMenuItem("Копировать в буфер", copy);
function copy():Void {
System.setClipboard(st_text.getSelectedText());
// Команда будет доступна, лишь если фрагмент текста будет выделен
function activ():Void {
if (!st_text.getSelected(0, st_text.getCount())) {
copy_command.enabled = false;
} else {
copy_command.enabled = true;
cont_menu.customItems.push(copy_command);

Приведенный код довольно очевиден, за исключением одной особенности.


Чтобы можно было «отловить» нажатие сочетания + , необходимо отключить поддержку плейером стандартных сочетаний. Иначе ни одно клавиатурное сочетание с клавишей не сможет быть услышано кодом ActionScript. Заблокировать прослушивание плейером стандартных сочетаний позволяет команда trapallkeys функции fscommand(). Правда, эта функция не работает в среде тестирования, поэтому проверить правильность приведенного кода можно, лишь запустив фильм в автономном проигрывателе.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Action Script на эту тему:
Автоматическое удаление пробелов. Свойство condenseWhite
Встраивание в фильм целого шрифта
Динамическая замена выделенного текста. Метод replaceSel()
Динамическое задание выделения. Метод setSelection()
Задание и извлечение текста поля

Вернуться в раздел: Action Script / 13. Работа с текстом