Двойной клик в ActionScript

Да, событие двойного клика мышки (далее - doubleClick) в flash-приложениях используется не часто. И это я ещё мягко выразился :-) Трудно сказать, с чем это связано. Зато отследить само событие совсем не сложно. Об этом и пойдёт речь далее.

Как это не странно, но проще всего работать с событием doubleClick в ActionScript 3.0, а не в ActionScript 2.0 (чаще бывает наоборот). Смотрите сами...

Код ActionScript 3.0:

/* импорт классов */ import flash.display.Sprite; import flash.events.MouseEvent; /* создаём и добавляем на сцену флеш-ролика спрайт квадратной формы и с красной заливкой */ var sprite:Sprite = new Sprite(); sprite.graphics.beginFill(0xff0000, 1); sprite.graphics.drawRect(0, 0, 100, 100); sprite.graphics.endFill(); addChild(sprite); sprite.x = 100; sprite.y = 100; /* отслеживаем двойной клик ЛКМ по созданному ранее спрайту */ sprite.addEventListener(MouseEvent.DOUBLE_CLICK, onDoubleClick); function onDoubleClick(event:MouseEvent):void{ trace("doubleClick") }

Как видите, всё довольно просто и вполне стандартно. Вот только работать это не будет. Дело в том, что у объектов, наследующих от InteractiveObject, имеется специальное свойство doubleClickEnabled. Свойство doubleClickEnabled определяет, получает ли объект события doubleClick. По умолчанию данное свойство имеет значение false, то есть объект не может получать событие двойного щелчка. Это, кстати, можно легко проверить...

Код ActionScript 3.0:

import flash.display.Sprite; var sprite:Sprite = new Sprite(); addChild(sprite); trace(sprite.doubleClickEnabled)

Трассировка вернёт false.

Поэтому наш первоначальный код надо дополнить одной строчкой кода...

Код ActionScript 3.0:

/* импорт классов */ import flash.display.Sprite; import flash.events.MouseEvent; /* создаём и добавляем на сцену флеш-ролика спрайт квадратной формы и с красной заливкой */ var sprite:Sprite = new Sprite(); sprite.graphics.beginFill(0xff0000, 1); sprite.graphics.drawRect(0, 0, 100, 100); sprite.graphics.endFill(); addChild(sprite); sprite.x = 100; sprite.y = 100; /* присваиваем свойству doubleClickEnabled объекта sprite значение true */ sprite.doubleClickEnabled = true; /* отслеживаем двойной клик ЛКМ по созданному ранее спрайту */ sprite.addEventListener(MouseEvent.DOUBLE_CLICK, onDoubleClick); function onDoubleClick(event:MouseEvent):void{ trace("doubleClick") }

Вот теперь всё будет работать. И чтобы в этом окончательно убедиться, давайте попробуем с помощью события doubleClick изменить размеры нашего тестового объекта.

Код ActionScript 3.0:

import flash.display.Sprite; import flash.events.MouseEvent; var sprite:Sprite = new Sprite(); sprite.graphics.beginFill(0xff0000, 1); sprite.graphics.drawRect(0, 0, 100, 100); sprite.graphics.endFill(); addChild(sprite); sprite.x = 100; sprite.y = 100; sprite.doubleClickEnabled = true; sprite.addEventListener(MouseEvent.DOUBLE_CLICK, onDoubleClick); function onDoubleClick(event:MouseEvent):void{ if(sprite.scaleX == 1){ sprite.scaleX = sprite.scaleY = 2; }else{ sprite.scaleX = sprite.scaleY = 1; } }

Результат:

А вот в ActionScript 2.0 стандартных возможностей для отлавливания события doubleClick не существует. Но и это не проблема, так как давно уже придуманы способы эмуляции события двойного щелчка в AS 2.0. Так, например, существует следующий, относительно распространённый способ...

Код ActionScript 2.0:

var delay:Number = 300; var myBroadcaster:Object = new Object(); AsBroadcaster.initialize(myBroadcaster); var myListener:Object = new Object(); myBroadcaster.addListener(myListener); Mouse.addListener(myListener); myListener.onMouseDown = function(){ clickInterval = getTimer() - clickTime; clickTime = getTimer(); if(clickInterval < delay){ myBroadcaster.broadcastMessage("onDoubleClick"); clickTime =- delay; } } myListener.onDoubleClick = function(){ trace("doubleClick") /* блок кода, выполняемый по двойному щелчку мышки */ }

Обратите внимание, что переменная delay хранит интервал в миллисекундах между первым и вторым кликом мышки. А значит, что через эту переменную мы можем настроить чувствительность нашего события doubleClick.

Автор: admin

Дата добавления: 2012-04-19

Просмотров: 3986

Рейтинг поста: +6-

Правила перепечатки

Социальные закладки:
Комментарии:
К данной заметке комментариев пока нет. Ваш комментарий может стать первым.
Добавить комментарий:







[ + ] помощь по форматирование текста

Идиот-тест

Если все обязательные поля (отмечены * ) заполнены необходимой информацией, то нажимаем кнопку Добавить комментарий.

Меню
Подписка
Рубрики
Метки
Последние комментарии
Рейтинг постов
Реклама
Друзья
География гостей
Статистика
Яндекс.Метрика