Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.01.2012, 22:15
Zizilk вне форума Посмотреть профиль Отправить личное сообщение для Zizilk Найти все сообщения от Zizilk
  № 1  
Ответить с цитированием
Zizilk

Регистрация: Sep 2011
Сообщений: 28
По умолчанию Удержание нажатой кнопки мыши

задача:
Имеется scrollrect, который надо сдвигать пока нажата кнопка мыши.
С использованием события Click, при каждом щелчке скролрект движется как надо, но вот как организовать контроль удержания...

ДУмал событие MOUSE_DOWN отвечает за удержание клавиши

Старый 05.01.2012, 22:19
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 2  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
MOUSE_DOWN срабатывает единовременно, в момент когда кнопка зажата, по этому событию можно присвоить значение какой-нибудь переменной, например
Код AS3:
var mouseDown:Boolean = false;
 
function onMouseDown(e:MouseEvent):void {
     mouseDown = true;
}
а по MOUSE_UP менять на false

и пока переменная true таскать скроллрект

Старый 05.01.2012, 22:21
Zizilk вне форума Посмотреть профиль Отправить личное сообщение для Zizilk Найти все сообщения от Zizilk
  № 3  
Ответить с цитированием
Zizilk

Регистрация: Sep 2011
Сообщений: 28
я пробовал так но поход вылетает в бесконечный цикл, надо будет проверить

Добавлено через 6 минут
на MouseDown вызывается функция fright переменная объявленная за функциями flag принимает значение 1 и вызывает функцию roll в которой цикл прокручивается пока flag==1
На MouseUP вызывается функция fdright flag присваивается значение 0, по идее цикл должен остановится, но по трассировки не смотря на то что мышь отпущена, событие отпускания мыши срабатывает, ток когда Адоб сам не остановит цикл с ошибкой.

Добавлено через 7 минут
Код AS3:
function roll()
{
	while(flag==1)
	{
		xs-=10;
		box.scrollRect = new Rectangle(xs,ys,100,100);
		trace(0);
	}
}
function fright(e:MouseEvent)
{
	flag=1;
	roll();
	trace(2);
}
function fdright(e:MouseEvent)
{
	flag=0;
	trace("2a");
}


Последний раз редактировалось Zizilk; 05.01.2012 в 22:30.
Старый 05.01.2012, 23:25
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 4  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
тут такое дело, специфика работы плеера: цикл в этом roll() прокрутится очень быстро очень много раз (видимо достаточно для создания ошибки), прежде чем сбросится flag по MouseUP, смысла в этом цикле нет никакого - визуальное изменение scrollRect все равно будет по окончательному результату работы цикла..
обычный подход в таких случаях это по MouseDown запускать ( по MouseUP останавливать ) какой-нибудь циклический обработчик (ENTER_FRAME, TIMER), а в нем уже что нужно, двигать тот же scrollRect, например
Код AS3:
package
{
	import flash.display.*;
	import flash.events.*;
	import flash.utils.*;
 
 
	public class Main extends Sprite
	{
 
		private var timer:Timer = new Timer(50);
		private var xs:Number = 0;
		public function Main():void
		{
			stage.addEventListener(MouseEvent.MOUSE_DOWN, stage_mouseDown);
			stage.addEventListener(MouseEvent.MOUSE_UP, stage_mouseUp);
			timer.addEventListener(TimerEvent.TIMER, timer_timer);
		}
 
		private function stage_mouseUp(e:MouseEvent):void 
		{
			timer.stop();
		}
 
		private function stage_mouseDown(e:MouseEvent):void 
		{
			timer.start();
		}
 
		private function timer_timer(e:TimerEvent):void 
		{
			xs -= 10;
			//box.scrollRect = new Rectangle(xs,ys,100,100);
			trace( "xs : " + xs );
		}
 
	}
 
}

Создать новую тему Ответ Часовой пояс GMT +4, время: 02:54.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 02:54.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.