Модераторы: SoWa
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> кнопки, клавиатурные кнопки 
:(
    Опции темы
jojo97
  Дата 14.1.2010, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 14.1.2010

Репутация: нет
Всего: нет



как сделать вот какой код соответствует этому приколу если(кнопка вверх зажата 1 секунду) 
{то игнорировать действие}. 
и вообще есть ли такой код 
 smile помгите плиз smile 

Это сообщение отредактировал(а) jojo97 - 14.1.2010, 16:47
PM MAIL   Вверх
SoWa
Дата 14.1.2010, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 1
Всего: 74



Если я правильно понимаю- то на обработчик MouseUp поставь изменение булевой глобальной переменной на истину.
А в обработчике MouseDown напиши создание таймера, чтобы тот через секунду проверил, а не является ли наша булевская переменная истинной. Если является- то делай. А если нет- то кнопка не была отпущена.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
bars80080
Дата 14.1.2010, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 1
Всего: 315



вот смотри, есть такая статейка, 

Цитата

Ядром модели событий Генернатор—Листенеры FlashMX2004 является недокументи<
рованный объект AsBroadcaster. Его методы позволяют регистрировать объект как ге<
нератор событий, рассылать сообщения листенерам, добавлять и удалять листенеры.
Данный объект может быть полезен, если вы хотите создать собственное событие или
сделать объект одного класса листенером событий другого. Ввиду таких обширных
возможностей AsBroadcaster является самой популярной и востребованной недоку<
ментированной возможностью ActionScript после функции ASSetPropFlags(). Поэто<
му обойти его вниманием только из<за того, что разработчики отказались включить
его в официальный справочник, было бы совсем неправильно.
Объект AsBroadcaster() имеет 4 метода, отвечающих за функционирование всей
модели событий:
* AsBroadcaster.initialize(obj), где obj — идентификатор объекта. Данный метод
позволяет регистрировать объект как генератор событий. При этом на ини<
циализируемый объект переносятся хранимые AsBroadcaster методы, отве<
чающие за добавление и удаление листенеров (уже знакомые нам addListener()
и removeListener()), а также метод, управляющий рассылкой сообщений листе<
нерам (broadcastMessage()). Кроме того, создается свойство _listeners, хранящее
пустой массив.
Чтобы убедиться, что метод AsBroadcaster.initialize() работает именно так, как
описано выше, мы попробуем зарегистрировать в качестве источника событий
пользовательский объект:
var obj:Object = {}; // Создаем объект
// Проверяем, какие свойства имеются у объекта до его инициализации
// как генератора событий
ASSetPropFlags(obj, null, null, 1); // Делаем скрытые свойства доступными
// для перечисления
for (var i in obj) {
trace(i); // Выводит: __proto__ (свойство хранит указатель
// на прототип конструктора) constructor
// (указатель на конструктор класса)
}
// Проверяем, какие свойства появились после использования метода
// AsBroadcaster.initialize()
AsBroadcaster.initialize(obj);
ASSetPropFlags(obj, null, null, 1);
for (var i in obj) {
trace(i); // Выводит: _listeners removeListener addListener
// broadcastMessage __proto__ constructor
}
* AsBroadcaster.addListener(listener). Метод, присваиваемый генераторам собы<
тий при инициализации и отвечающий за добавление листенера в массив
_listeners. Его мы подробно обсуждали ранее.
* AsBroadcaster.removeListener(listener). Присваиваемый объектам, генерирую<
щимсобытия, метод, служащий для удаления листенера из массива _listeners.
* AsBroadcaster.broadcastMessage("Event", parameters), где "Event"—строка с име<
нем события, parameters — список передаваемых обработчику событий пара<
метров. Данный метод, присваиваемый объекту при его регистрации в качестве
генератора событий, служит для отправления всем листенерам сообщения о со<
бытии. На уровне реализации модели событий при вызове данного метода про<
исходит следующее: перебираются все элементы массива _listeners и для каждо<
го из них осуществляется вызов метода с именем "Event". Например, если поль<
зователь выполняет щелчок мышью, то проделывается следующая строка кода:
Mouse["broadcastMessage"]("onMouseDown");
Действия, которые будут при этом выполнены, могут быть продублированы
следующими строчками сценария:
for (var i = 0; i<Mouse["_listeners"].length; i++) {
Mouse["_listeners"][i]["onMouseDown"]();
}
Принеобходимости обработчику события могут быть переданы параметры. Для этого
их список должен быть прописан в качестве аргументов метода broadcastMessage().
К сожалению, из встроенных событий лишь немногие сопровождаются передачей
параметров. Например, такими событиями являются onSetFocus и onKillFocus (они
присущи кнопкам, клипам и текстовым полям). То, что обработчикам событий ред<
ко передаются аргументы, не всегда оправданно. Так, например, при обработке на<
жатия клавиши (событие onKeyDown объекта Key) практически всегда нужно знать
ее код. Обычно для этого используется метод Key.getCode(). Однако при желании
можно создать собственный отвечающий за события клавиатуры объект таким об<
разом, чтобы при нажатии клавиши его листенеры получали ее код:
_global.myKey = {}; // Пользовательский аналог Key
AsBroadcaster.initialize(myKey); // Ðегистрируем myKey как генератор
// событий
Key.addListener(myKey); // Çаносим myKey в список листенеров объекта Key
// При наæатии клавиøи myKey отправляет вызовы метода onKeyDown своим
// листенерам с кодом задействованной кнопки в качестве параметра
myKey.onKeyDown = function():Void {
var kod:Number = Key.getCode();
8.5. Îбъект AsBroadcaster. ßдро модели событий Ãенератор—Ëистенеры 359
myKey.broadcastMessage("onKeyDown", kod);
};
myKey.addListener(_root); // Ðегистрируем _root как листенер myKey
_root.onKeyDown = function(kod:Number):Void {
trace(kod); // При наæатии кнопок клавиатуры в Output
// появляются их коды
};
Используя возможности, предоставляемые объектом AsBroadcaster, можно спра<
виться с задачей, которая оказалась нам не по силам в начале этой главы — «под<
писать» кнопку на событие клипа. Для примера сделаем кнопку листенером собы<
тия onEnterFrame:
// Создаем кнопку и называем ее but
// Создаем пустой клип — он будет генерировать событие
this.createEmptyMovieClip("eventClip", 100000);
// Èнициализируем клип как источник событий
AsBroadcaster.initialize(eventClip);
// При загрузке нового кадра отправляем сообùение о событии onEnterFrame
// всем листенерам
eventClip.onEnterFrame = function():Void {
this.broadcastMessage("onEnterFrame");
};
// Добавляем кнопку but в массив листенеров клипа eventClip
eventClip.addListener(but);
but.onEnterFrame = function():Void {
this._xscale = this._yscale += 1; // Êнопка плавно увеличивается
};
Главное достоинство объекта AsBroadcaster заключается в том, что с его помощью
вы можете создавать собственные события. Попробуйте для тренировки самостоя<
тельно написать код, генерирующий событие двойного щелчка мышью. Если не
получится — внимательно изучите описание, приведенное в проекте этой главы.

остаётся попробовать, есть ли ещё событие onKeyUp, затем повесить две функции, одна запускает таймер setInterval по нажатию кнопки, а другая останавливает по отпусканию кнопки. измерить время и определиться с дальнейшими действиями

Добавлено через 50 секунд
а я что-то про клавиатуру подумал
PM MAIL WWW   Вверх
jojo97
  Дата 14.1.2010, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 14.1.2010

Репутация: нет
Всего: нет



Цитата(SoWa @ 14.1.2010,  18:38)
Если я правильно понимаю- то на обработчик MouseUp поставь изменение булевой глобальной переменной на истину.
А в обработчике MouseDown напиши создание таймера, чтобы тот через секунду проверил, а не является ли наша булевская переменная истинной. Если является- то делай. А если нет- то кнопка не была отпущена.

 smile во первых  я про клавиатурные кнопки, во вторых  мне нужно конкретный код smile 
PM MAIL   Вверх
SoWa
Дата 15.1.2010, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 1
Всего: 74



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

А если хочешь разобраться- Барс привел полезную статью с примерами. Читай, понимай, воплощай. Удачи!

Модератор: Тема закрыта


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Flash"
AlDev
SoWa
  • Если вы хотите предложить кому-либо работу, то пишите или в личку, или оставляйте сообщения в специально предназначеном для этого форуме "Объявления о найме специалистов"
  • Один вопрос - одна тема. Не надо переходов от одного вопроса к другому.
  • Если вы хотите показать какой-нибудь ваш мульт, причём показать, а не предоставить исходник, то вам сюда
  • Вопросы по разработке интернет-приложений на Flex и вопросы по MXML пишите в раздел Flex
  • Смотрим в будущее. ActionScript 3 обсуждается в форуме ActionScript 3
  • Новости из мира Flash.
  • New! [code=ascript][/code] - подсветка ActionScript + wikipedia help

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, AlDev, SoWa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | ActionScript 1,2 | Следующая тема »


 




[ Время генерации скрипта: 0.0498 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.