Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > ActionScript 1,2 > double clic


Автор: VingradFan 13.3.2006, 00:15
ПРИВЕТ!!!
очень интересно, есть ли такое событие???
или надо химичить, самому придумывать код???

Автор: AlDev 13.3.2006, 12:08
как говорит один мой хороший знакомый, "что тут пить?"
Код

var list:Object = new Object();
list.firstClickTime = 0;
list.currentClickTime = 0;
list.maxDelay = 250;
list.onMouseDown = function():Void
{
    this.currentClickTime = new Date().getTime();
    if ((this.currentClickTime - this.firstClickTime)<this.maxDelay)
    {
        trace ('bla');
    }
    this.firstClickTime = this.currentClickTime;
}
Mouse.addListener(list);

Автор: VingradFan 13.3.2006, 16:09
AlDev, попытался добавить к кнопке
но блабла трэйсица сразу 20 раз!!!при 2-ом щелчке???
как написать это для кнопки нормально??? smile

Автор: AzuManga 13.3.2006, 18:28
интересное применение кода Алекса....
При втором щелчке на кнопку или на list у тебя появляется бла? Зачем нужна кнопка если обработчик повешен на лист. Принцип не совсем ясен... По идее у list вообще нет видимой области 8)) Объект и все 8)

Автор: VingradFan 13.3.2006, 21:06
AzuManga, ну вот я и спрашиваю как повесить этот код на кнопку??

Автор: AlDev 14.3.2006, 07:12
Код

class com.batsuev.utils.MouseUtils
{
    public static function initDoubleClick(target_mc:MovieClip):Void
    {
    target_mc.double_click_list = new Object();
    target_mc.double_click_list.firstClickTime = 0;
    target_mc.double_click_list.currentClickTime = 0;
    target_mc.double_click_list.maxDelay = 300;
    target_mc.double_click_list.onMouseDown = function():Void  
    {
        this.double_click_list.currentClickTime = new Date().getTime();
        if ((this.double_click_list.currentClickTime-this.double_click_list.firstClickTime)<this.double_click_list.maxDelay)
        {
            this.onDoubleClick();
        }
        this.double_click_list.firstClickTime = this.double_click_list.currentClickTime;
    }
    target_mc.onPress = target_mc.double_click_list.onMouseDown;
    }
}


usage:
Код

import com.batsuev.utils.MouseUtils;

var my_mc:MovieClip = this['blablabla_mc']; //устанавливаем сцылку на клип
MouseUtils.initDoubleClick(my_mc);
my_mc.onDoubleClick = function():Void
{
  trace ('double click called');
}


косяк что onPress не переопределить. Если интересно, могу показать пример через addEventListener

Автор: VingradFan 14.3.2006, 14:42
AlDev, с удовольствием посмотрю!!!
Цитата

Если интересно, могу показать пример через addEventListener

Добавлено @ 14:54
кстати Алекс!!!чота не работает =((( может я опять напутал что-то???
Цитата

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 1: Classes may only be defined in external ActionScript 2.0 class scripts.
    class com.batsuev.utils.MouseUtils

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 22: The class 'com.batsuev.utils.MouseUtils' cannot be imported because its leaf name is already being resolved to imported class 'com.batsuev.utils.MouseUtils'.
    import com.batsuev.utils.MouseUtils;

Total ActionScript Errors: 2  Reported Errors: 2

Автор: szz 14.3.2006, 21:54
Цитата

может я опять напутал что-то???

Ага smile
1. Создай папки друг в друге "com\batsuev\utils"
2. В папке utils создай файл "MouseUtils.as" и скопируй туда первый код который тебе дал AlDev http://forum.vingrad.ru/index.php?showtopic=87183&view=findpost&p=670411
А в fla файле уже пиши второй код http://forum.vingrad.ru/index.php?showtopic=87183&view=findpost&p=670411

Автор: AlDev 15.3.2006, 06:03
Лучше вообще в папке
Цитата
C:\Program Files\Macromedia\Flash 8\en\First Run\Classes

создать папки друг в друге
Цитата
com\batsuev\utils

Автор: szz 26.3.2006, 11:46
Кстати, прикольно, так как мы сами управляем щелчками на самом родном уровне, то можно предлагать юзерам такие штуки, как, например, тройной щелчок smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)