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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.02.2010, 16:20
AlinaSilaeva вне форума Посмотреть профиль Отправить личное сообщение для AlinaSilaeva Найти все сообщения от AlinaSilaeva
  № 1  
Ответить с цитированием
AlinaSilaeva
[+1 18.06.09]

Регистрация: Jun 2009
Сообщений: 52
По умолчанию Горизонтальный скролл?

Здравствуйте, господа Флешеры!
безуспешно перерыв весь гугл и флешер.ру я решаюсь задать вопрос.
Не могу реализовать скроллинг объекта под маской!

Пожалуйста, помогите! Кому не жалко, дайте пример или исходник горизонтального скролла. Нужен только бегунок неизменяемого размера, без стрелочек!!

Поможите!!!! Спасибки!

Старый 16.02.2010, 16:30
dmitriev вне форума Посмотреть профиль Отправить личное сообщение для dmitriev Найти все сообщения от dmitriev
  № 2  
Ответить с цитированием
dmitriev
 
Аватар для dmitriev

Регистрация: Jun 2007
Адрес: Челябинск
Сообщений: 303
Отправить сообщение для dmitriev с помощью ICQ
Такой вот класс есть у меня =)
Использование:
Код AS3:
var newSpriteWithScroll:DOWithScroll = DOWithScroll(ширинаСкроллбара, высотаСкроллбара, спрайт)
Написан на скорую руку, поэтому за пример хорошего кода брать не стоит, но вроде бы работает ^..^

Код AS3:
package  
{
	import flash.display.DisplayObject;
	import flash.display.LineScaleMode;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.events.TimerEvent;
	import flash.geom.Point;
	import flash.geom.Rectangle;
	import flash.utils.Timer;
 
	/**
	 * ...
	 * @author Sergey Dmitriev
	 */
	public class DOWithScroll extends Sprite
	{
		private var _source:Sprite;
 
		private var _width:Number;
		private var _height:Number;
 
		private var _scrollBackground:Sprite;
		private var _scrollButton:Sprite;
		private var _scroll:Sprite;
 
		private var _k:Number;
		private var _timer:Timer;
 
		public function DOWithScroll(width:Number, height:Number, source:Sprite)
		{
			_width = width;
			_height = height;
			_source = source;
 
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
 
			_k = _height / _source.height;
 
			_scroll = new Sprite();
			_scrollBackground = new Sprite();
			_scrollButton = new Sprite();
 
			_scroll.addChild(_scrollBackground);
			_scroll.addChild(_scrollButton);
 
 
			_scroll.x = _source.width;
			addChild(_scroll);
			addChild(_source);
 
			_scrollBackground.addEventListener( MouseEvent.MOUSE_DOWN, downBg);
			_scrollBackground.addEventListener( MouseEvent.MOUSE_UP, upBg );
			_scrollBackground.addEventListener( MouseEvent.MOUSE_OUT, outBg );
 
 
			_scrollButton.addEventListener( MouseEvent.MOUSE_DOWN, downButton );
			_scrollButton.addEventListener( MouseEvent.MOUSE_UP, upButton );
			_scrollButton.addEventListener( MouseEvent.MOUSE_OVER, outBg );
 
			stage.addEventListener( MouseEvent.MOUSE_UP, upButton );
			stage.addEventListener( MouseEvent.MOUSE_UP, upBg );
			stage.addEventListener( MouseEvent.MOUSE_WHEEL, scroll );
 
			addEventListener( Event.ENTER_FRAME, redrawScrollRect );
 
			redraw();
		}
 
		private function outBg(e:MouseEvent):void 
		{
			stopTimer();
		}
 
		private function downBg(e:MouseEvent):void 
		{
			moveScrollButton();
 
			_timer = new Timer(200, 100);
			_timer.addEventListener(TimerEvent.TIMER, timerUpdate);
			_timer.start();
		}
 
		private function upBg(e:MouseEvent):void 
		{
			if (_timer)
			{
				stopTimer();
			}
		}
 
		private function timerUpdate(e:TimerEvent):void 
		{
			moveScrollButton();
		}
 
		private function stopTimer():void
		{
			_timer.removeEventListener(TimerEvent.TIMER, timerUpdate);
				_timer.stop();
		}
 
		private function moveScrollButton():void
		{
			if (_scrollBackground.mouseY < _scrollButton.y + _scrollButton.height / 2 && _scrollButton.y - _scrollButton.height >= 0)
				_scrollButton.y -= _scrollButton.height;
			else if (_scrollBackground.mouseY < _scrollButton.y + _scrollButton.height / 2 && _scrollButton.y - _scrollButton.height < 0)
				_scrollButton.y = 0;	
			else if (_scrollBackground.mouseY > _scrollButton.y + _scrollButton.height / 2 && _scrollButton.y + _scrollButton.height <= _height - _scrollButton.height)
				_scrollButton.y += _scrollButton.height;
			else if (_scrollBackground.mouseY > _scrollButton.y + _scrollButton.height / 2 && _scrollButton.y + _scrollButton.height > _height - _scrollButton.height)
				_scrollButton.y = _height - _scrollButton.height;
		}
 
		private function scroll(e:MouseEvent):void 
		{
			if (_scrollButton.y - e.delta * 2 < 0)
				_scrollButton.y = 0;
			else if (_scrollButton.y - e.delta * 2 > _height - _scrollButton.height)
				_scrollButton.y = _height - _scrollButton.height;
			else
				_scrollButton.y -= e.delta * 2;
		}
 
		private function redrawScrollRect(e:Event):void 
		{
			if (!_source.scrollRect) _source.scrollRect = new Rectangle(0, 0, _source.width, _height);
			var rect:Rectangle = _source.scrollRect;
			rect.y += (_scrollButton.y / _k - rect.y) / 3;
			_source.scrollRect = rect;
		}
 
		private function upButton(e:MouseEvent):void 
		{
			_scrollButton.stopDrag();
		}
 
		private function downButton(e:MouseEvent):void 
		{
			_scrollButton.startDrag(false, new Rectangle(0, 0, 0, _height - _scrollButton.height));
		}
 
		private function redraw():void
		{
			_scrollButton.graphics.clear();
			//_scrollButton.graphics.lineStyle(0, 0x000000, 1.0, true, LineScaleMode.NONE);
			_scrollButton.graphics.beginFill(0x333333, 1.0);
			_scrollButton.graphics.drawRect(0, 0, _width, _height * _k);
 
			_scrollBackground.graphics.clear();
			//_scrollBackground.graphics.lineStyle(0, 0x999999, 1.0, true, LineScaleMode.NONE);
			_scrollBackground.graphics.beginFill(0xCCCCCC, 1.0);
			_scrollBackground.graphics.drawRect(0, 0, _width, _height);
		}
	}
 
}
__________________
O God! The Aftermath.

Старый 16.02.2010, 17:05
AlinaSilaeva вне форума Посмотреть профиль Отправить личное сообщение для AlinaSilaeva Найти все сообщения от AlinaSilaeva
  № 3  
Ответить с цитированием
AlinaSilaeva
[+1 18.06.09]

Регистрация: Jun 2009
Сообщений: 52
Спасибо! Попробую сейчас... А с исходником нет варианта, для наглядности?

Старый 16.02.2010, 17:12
dmitriev вне форума Посмотреть профиль Отправить личное сообщение для dmitriev Найти все сообщения от dmitriev
  № 4  
Ответить с цитированием
dmitriev
 
Аватар для dmitriev

Регистрация: Jun 2007
Адрес: Челябинск
Сообщений: 303
Отправить сообщение для dmitriev с помощью ICQ
Нет, с исходником нету.
__________________
O God! The Aftermath.

Старый 16.02.2010, 17:36
proxiServer вне форума Посмотреть профиль Отправить личное сообщение для proxiServer Найти все сообщения от proxiServer
  № 5  
Ответить с цитированием
proxiServer
 
Аватар для proxiServer

Регистрация: Jun 2006
Сообщений: 400
Посмотрите, может подойдет.
Вложения
Тип файла: rar as3scrollBar.rar (207.8 Кб, 186 просмотров)

Старый 17.02.2010, 15:16
AlinaSilaeva вне форума Посмотреть профиль Отправить личное сообщение для AlinaSilaeva Найти все сообщения от AlinaSilaeva
  № 6  
Ответить с цитированием
AlinaSilaeva
[+1 18.06.09]

Регистрация: Jun 2009
Сообщений: 52
Да это все не то ((( Это ВЕРТИКАЛЬНЫЙ скролл, а мне нужен ГОРИЗОНТАЛЬНЫЙ!
тем более не готовый компонент а из прямоугольничка 20х5 сделать скролл, без стрелок, без растягивания этого самого прямоугольничка

Старый 17.02.2010, 16:07
scarbo вне форума Посмотреть профиль Отправить личное сообщение для scarbo Найти все сообщения от scarbo
  № 7  
Ответить с цитированием
scarbo
 
Аватар для scarbo

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
просто надо Y заменить на X, а HEIGHT на WIDTH, и будет счастье.
А если что-то сильно надо, то есть Вакансии
__________________
Я просто добрый шутник.

Старый 17.02.2010, 16:30
proxiServer вне форума Посмотреть профиль Отправить личное сообщение для proxiServer Найти все сообщения от proxiServer
  № 8  
Ответить с цитированием
proxiServer
 
Аватар для proxiServer

Регистрация: Jun 2006
Сообщений: 400
AlinaSilaeva компонент можно сделать горизонтальным. Там параметр специальный есть. А вообще не совсем ясно что вам надо.

Делайте тогда этот прямоугольничек. На событие мыши делайте startDrag/stopDrag. На событие mouseMove по этому прямоугольнику управляйте его перемещением. Если горизонтальный скролл нужен, то фиксируете this.y = const

Старый 17.02.2010, 17:41
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 9  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Ну попробуйте хоть это
http://murmadillo.tut.su/m/sv-gor-sl.zip
__________________
Гоночка

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

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

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


 


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


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