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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.11.2007, 04:42
Torero вне форума Посмотреть профиль Отправить личное сообщение для Torero Найти все сообщения от Torero
  № 1  
Ответить с цитированием
Torero
[+1.4 18.06.07]
 
Аватар для Torero

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
По умолчанию Как узнать: нажата-ли кнопка мыши в пределах ролика?

Доброго времени суток.
Решил скролл сделать - наткнулся на проблему: MouseEvent-ы привязываются к конкретному объекту.
Подскажите пожалуйста - как отследить MOUSE_UP в любой точке ролика и выход за его(ролика) пределы.
__________________
А я Томат.

Старый 02.11.2007, 10:34
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Подписаться у stage.

Старый 02.11.2007, 10:37
LokiDi L0ck вне форума Посмотреть профиль Отправить личное сообщение для LokiDi L0ck Найти все сообщения от LokiDi L0ck
  № 3  
Ответить с цитированием
LokiDi L0ck

Регистрация: Oct 2007
Сообщений: 53
Вероятно нужно назначить слушателей для stage. А по e.target определять по кому нажали мышкой.

Насчёт выхода за границы Event.MOUSE_LEAVE

//опередили =)
__________________
Новичок

Старый 02.11.2007, 11:32
vvk80 вне форума Посмотреть профиль Отправить личное сообщение для vvk80 Найти все сообщения от vvk80
  № 4  
Ответить с цитированием
vvk80
[+3 09.12.07]

Регистрация: Oct 2006
Сообщений: 114
Цитата:
Сообщение от Torero
Доброго времени суток.
Решил скролл сделать
Уважаемый, Torero!

Подскажите пожалуйста, а как вы скролл делаете. У меня тоже такая проблема стоит... Объясните хотя бы логику... Понятно что надо scrollRect использовать... но дальше простого слайдинга вверх вниз у меня дело не пошло...А я бы хотел чтобы типа подвел к определенному месту ролика ролик пошел вверх, пошел к другому ролик- пошел вниз (если есть куда идти).

Старый 02.11.2007, 15:41
Torero вне форума Посмотреть профиль Отправить личное сообщение для Torero Найти все сообщения от Torero
  № 5  
Ответить с цитированием
Torero
[+1.4 18.06.07]
 
Аватар для Torero

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
Спасибо за ответы - почти так и сделал..)))
Цитата:
Сообщение от vvk80
чтобы типа подвел к определенному месту ролика ролик пошел вверх, пошел к другому ролик- пошел вниз.
Если я правильно понял, то вот обсуждение аналогичного скролла.
http://www.flasher.ru/forum/showthread.php?t=98574
__________________
А я Томат.

Старый 02.11.2007, 16:20
vvk80 вне форума Посмотреть профиль Отправить личное сообщение для vvk80 Найти все сообщения от vvk80
  № 6  
Ответить с цитированием
vvk80
[+3 09.12.07]

Регистрация: Oct 2006
Сообщений: 114
Цитата:
Сообщение от Torero
Спасибо за ответы - почти так и сделал..)))

Если я правильно понял, то вот обсуждение аналогичного скролла.
http://www.flasher.ru/forum/showthread.php?t=98574
спасибо, это то что нужно...
но вот блин, не хотелось бы опять в AS2 разбираться...

Старый 02.11.2007, 18:05
vvk80 вне форума Посмотреть профиль Отправить личное сообщение для vvk80 Найти все сообщения от vvk80
  № 7  
Ответить с цитированием
vvk80
[+3 09.12.07]

Регистрация: Oct 2006
Сообщений: 114
http://www.sephiroth.it/tutorials/flashPHP/scrollRect/
взял код переделал в AS 3... подправил под свои нужды...

Код:
private function _onEnterFrame(evt:Event):void
		{
			mouse.x = this.mouseX;
			mouse.y = this.mouseY;
			if(r_mask.containsPoint(mouse))
			{
				y_pos = ((Math.abs(cont.y - mouse.y)/rect.height)*(r_img.height-rect.height));
				//x_pos = ((Math.abs(cont.x - mouse.x)/rect.width)*(r_img.width-rect.width));
			}
		
			//rect.x += (x_pos - rect.x)/8;
			//rect.x = rect.x;
			//rect.y += (y_pos - rect.y)/8;
			//rect.x = x_pos
			rect.y = y_pos;
			cont.scrollRect = rect;
отключил эфекты, так как почему -то они у меня работать стабильно не захотели... также отключил скроллинг по х.

если включаю эфекты (rect.y += (y_pos - rect.y)/8) флешка начинает вести себя не стабильно...


Последний раз редактировалось vvk80; 02.11.2007 в 19:21.
Старый 02.11.2007, 19:02
Torero вне форума Посмотреть профиль Отправить личное сообщение для Torero Найти все сообщения от Torero
  № 8  
Ответить с цитированием
Torero
[+1.4 18.06.07]
 
Аватар для Torero

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
Нет времени - пишу навскидку несколько кусков кода:

Код:
/***target - прокручиваемый спрайт/мувик/текстфилд - у target есть маска, которая скрывает все лишнее.***/

private var target:DisplayObject;

target.addEventListener(MouseEvent.MOUSE_OVER, mouseON);
target.addEventListener(MouseEvent.MOUSE_OUT, mouseOFF);

	private function mouseON(e:MouseEvent):void{
		target.addEventListener(Event.ENTER_FRAME, targetScroll);
	}

	private function targetScroll(e:Event):void{
/*** здесь попробуй юзать соотношения "target.mouseX" с "target.mask.mouseX" 
и "target.mouseY" c "target.mask.mouseY", для определения координат target под маской.***/
		target.x=...	
		target.y=..	
	}

	private function mouseOFF(e:MouseEvent):void{
		target.removeEventListener(Event.ENTER_FRAME);
	}
для перехвата событий мыши, скорее всего, прийдестя помимо маски добавлять еще и спрайт-перехватчик, расположенный поверх нее - уже точно не помню.
доделай до конца - получишь универсальный класс-скроллер.
__________________
А я Томат.


Последний раз редактировалось Torero; 02.11.2007 в 19:05.
Старый 02.11.2007, 19:33
vvk80 вне форума Посмотреть профиль Отправить личное сообщение для vvk80 Найти все сообщения от vvk80
  № 9  
Ответить с цитированием
vvk80
[+3 09.12.07]

Регистрация: Oct 2006
Сообщений: 114
мой класс:
Код:
package
{
	import flash.display.*;
	import flash.geom.*;
	import flash.events.*;
	import flash.utils.*;
	
	import HelperClasses.Objects.*;
	
	public class Test extends Sprite
	{
		//private var shape:Shape = new Shape();
		private var cont:Sprite = new Sprite();
			
		private var rect:Rectangle= new Rectangle(0,0,300,560);
		private var mouse:Point = new Point(0,0)
		private var r_img:Rectangle;
		private var r_mask:Rectangle;
		private var x_pos:Number
    	private var y_pos:Number

		private var img:BaseClass; //my Swf/Img loader
		
		
		private var _heightC:Number;
		
		public function Test():void
		{
			//shape.graphics.beginFill(0xFFFF00,1);
			//shape.graphics.drawRect(300,200,300,300);
			//shape.graphics.endFill();
			
			img = new BaseClass(cont,"LeftPane_overview.swf");
			img.initImg(0,0);
			img.addEventListener(BaseClass.LOAD_COMPLETE, _onLoadComplete);
							
			cont.addEventListener(MouseEvent.ROLL_OVER, _onRollOver);
			cont.addEventListener(MouseEvent.ROLL_OUT, _onRollOut);
			this.addChild(cont);
						
			cont.x=18;
			cont.y=140;
			this.addEventListener("fullyLoaded",full);//listening to the global full event for loaded swf 
//dispathed by the loaded swf when it is fully loaded (all inner components are loaded
// used to obtain actual dimensions of the loaded swf
// event declared as public in the loaded swf 
		}
		
		private function full(evt:Event):void
		{
			trace("Full")
			trace(img.getHeight);
			r_img  = new Rectangle(0, 0, img.getWidth, img.getHeight) //getting rectnagle object containing the original width and height of the loaded image
			r_mask = new Rectangle(cont.x, cont.y, rect.width, rect.height)
			start();
		}
		
		private function start():void
		{
			cont.scrollRect = rect;
			cont.addEventListener(Event.ENTER_FRAME,_onEnterFrame);
		}
		
		private function _onEnterFrame(evt:Event):void
		{
			mouse.x = this.mouseX;
			mouse.y = this.mouseY;
			if(r_mask.containsPoint(mouse))
			{
				y_pos = ((Math.abs(cont.y - mouse.y)/rect.height)*(r_img.height-rect.height));
				//x_pos = ((Math.abs(cont.x - mouse.x)/rect.width)*(r_img.width-rect.width));
			}
		
			//rect.x += (x_pos - rect.x)/8;
			//rect.x = rect.x;
			//rect.y += (y_pos - rect.y)/8;
			//rect.x = x_pos
			rect.y = y_pos;
			cont.scrollRect = rect;
		}
		private function _onLoadComplete(evt:Event):void
		{
			trace("loadComplete");
		}
		private function _onRollOver(evt:Event):void
		{
			
		}
		private function _onRollOut(evt:Event):void
		{
			
		}
	}
}
если включаю rect.y += (y_pos - rect.y)/8;, начинаются глюки...

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

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

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


 


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


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