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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.07.2010, 00:26
das uberdog вне форума Посмотреть профиль Отправить личное сообщение для das uberdog Найти все сообщения от das uberdog
  № 1  
Ответить с цитированием
das uberdog
 
Аватар для das uberdog

Регистрация: Jun 2007
Сообщений: 24
По умолчанию Как ограничить скролл?

Простой казалось бы вопрос, но я не могу разобраться.
При прокручивании колесиком мыши, контент муви клипа (area_mc) уезжает за границы сцены.
Нужно ограничить скролл муви клипа (area_mc) с текстом и картинками и соответственно, скролл бара (scroller_mc).
При прокручивании скрол баром все работает нормально.

Подскажите, где искать ответ?

код такой:

Код AS1/AS2:
var scrollUpper:Number = 9;
var scrollLower:Number = 375;
 
var areaLower:Number = 0;
var areaUpper:Number = -425;
 
var scrollRange:Number = scrollLower - scrollUpper;
var areaRange:Number = areaLower - areaUpper;
 
 
 
function scroll() {
	var moved:Number = scroller_mc._y - scrollUpper;
	var pctMoved:Number = moved/scrollRange;
	var areaMoved:Number = pctMoved*areaRange;
	area_mc._y = areaLower - areaMoved;
}
 
scroller_mc.onPress = function() {
	this.startDrag(false,this._x,scrollUpper,this._x,scrollLower);
	this.onMouseMove = scroll;
}
 
scroller_mc.onRelease = scroller_mc.onReleaseOutside = function() {
	this.stopDrag ();
	this.onMouseMove = null;
}
 
var mouseListener:Object = new Object();
mouseListener.onMouseWheel = function(delta) {
area_mc._y += delta*4;
scroller_mc._y -= delta*4;
area_mc.Slide();
  }
Mouse.addListener(mouseListener);


Последний раз редактировалось das uberdog; 17.07.2010 в 01:56.
Старый 17.07.2010, 02:01
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Код AS1/AS2:
class com.AlexNavigation.scrollbarDEFENDER {
	var _S:MovieClip;//scroller
	var _M:MovieClip;//mask
	var _C:MovieClip;//content
	var _d;
	var _u;
	var top;
	var bottom;
	var left;
	var right;
	var _int;
	var _int2;
	public function scrollbarDEFENDER() {
	}
	private function scrollIt(_s, _m, _c, useButtons, btDown, btUp) {
		if (useButtons == undefined) {
			useButtons = false;
		}
		_S = _s;
		_M = _m;
		_C = _c;
		_d = btDown;
		_u = btUp;
		top = _M._y;
		bottom = _M._y+_M._height-_S._height;
		left = _M._x;
		right = _M._x+_M._width;
		_C._y = top;
		_C._x = left;
		_S._y = top;
		_S._x = right;
 
		_S.onPress = mx.utils.Delegate.create(this, PRESS);
		_S.onMouseMove = mx.utils.Delegate.create(this, Update);
		_S.onRelease = _S.onReleaseOutside=btDown.onRelease=btUp.onRelease=btDown.onReleaseOutside=btUp.onReleaseOutside=mx.utils.Delegate.create(this, RELEASE);
		_M.onMouseMove = mx.utils.Delegate.create(this, check);
		if (useButtons) {
			_S._visible = false;
			//btDown.onPress = mx.utils.Delegate.create(this, dREL);
			//btUp.onPress = mx.utils.Delegate.create(this, upREL);
		}
	}
	function RELEASE() {
		clearInterval(_int);
		_S.stopDrag();
	}
	function Update() {
		var ratio = (_C._height-_M._height)/(_M._height-_S._height);
		_C._y = ((_M._y-_S._y)*ratio)+_M._y;
	}
	function PRESS() {
		if (_M._height<_C._height) {
			_S.startDrag(false,right,top,right,bottom);
		}
	}
	function check() {
		if (_M._height<_C._height) {
			_S.enabled = true;
			_d._visible = true;
			_u._visible = true;
		} else {
			_S.enabled = false;
			_d._visible = false;
			_u._visible = false;
		}
	}
 
}
к onMouseWheel сами прикрепите

Старый 17.07.2010, 02:31
das uberdog вне форума Посмотреть профиль Отправить личное сообщение для das uberdog Найти все сообщения от das uberdog
  № 3  
Ответить с цитированием
das uberdog
 
Аватар для das uberdog

Регистрация: Jun 2007
Сообщений: 24
Спасибо, попробую разобраться.

А можно как то ограничить прокрутку контента (area_mc) по Y в onMouseWheel? Может так проще будет.

Старый 17.07.2010, 12:54
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 4  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
смотрите пример. ! там все математически описано. вам нужен тока алгоритм

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

Регистрация: Jun 2007
Сообщений: 24
То есть мой код не годиться, его не улучшить, мне взять ваш? Ваш не могу разобрать .(

Старый 17.07.2010, 19:15
rainbowrussia вне форума Посмотреть профиль Отправить личное сообщение для rainbowrussia Найти все сообщения от rainbowrussia
  № 6  
Ответить с цитированием
rainbowrussia
 
Аватар для rainbowrussia

Регистрация: Feb 2008
Сообщений: 560
Если принципиально, выложите исходник (можно упрощенный, но чтобы было видно что скроллится и как) с вашим кодом, лучше в формате CS3.

Старый 18.07.2010, 01:05
das uberdog вне форума Посмотреть профиль Отправить личное сообщение для das uberdog Найти все сообщения от das uberdog
  № 7  
Ответить с цитированием
das uberdog
 
Аватар для das uberdog

Регистрация: Jun 2007
Сообщений: 24
Не то что бы принципиально, а очень, очень важно...и еще, я ничего не понял из кода in4core
Вот исходник. Нужно просто ограничить движения муви клипа по вертикали.
Вложения
Тип файла: rar Mouse_Scroll.rar (22.8 Кб, 64 просмотров)


Последний раз редактировалось das uberdog; 18.07.2010 в 01:37.
Старый 18.07.2010, 02:15
rainbowrussia вне форума Посмотреть профиль Отправить личное сообщение для rainbowrussia Найти все сообщения от rainbowrussia
  № 8  
Ответить с цитированием
rainbowrussia
 
Аватар для rainbowrussia

Регистрация: Feb 2008
Сообщений: 560
Замените
Код AS1/AS2:
area_mc._y += delta*4;
scroller_mc._y -= delta*4;
area_mc.Slide();
на
Код AS1/AS2:
	scroller_mc._y -= delta*4;
	if (scroller_mc._y < scrollUpper) { scroller_mc._y = scrollUpper; }
	if (scroller_mc._y > scrollLower) { scroller_mc._y = scrollLower; }
	scroll();
ps. Не понял, что за .Slide() ? вроде поиск не нашел в проекте такую функцию.
Вложения
Тип файла: rar scrl.rar (43.6 Кб, 57 просмотров)


Последний раз редактировалось rainbowrussia; 18.07.2010 в 02:18.
Старый 18.07.2010, 03:09
das uberdog вне форума Посмотреть профиль Отправить личное сообщение для das uberdog Найти все сообщения от das uberdog
  № 9  
Ответить с цитированием
das uberdog
 
Аватар для das uberdog

Регистрация: Jun 2007
Сообщений: 24
Ааа...то есть не нужно вообще трогать муви клип, можно скроллер использовать!
Спасиба! Вы очень помогли.
Я понимал что границы вроде уже есть в скроллере, но как передать их area_mc не понимал. Спасибо еще раз.

А чтоб плавно клип подъезжал, как называется функция, что искать в хелпе??

.Slide() видимо закрался во время экспериментов .)


Последний раз редактировалось das uberdog; 18.07.2010 в 03:17.
Старый 18.07.2010, 04:22
rainbowrussia вне форума Посмотреть профиль Отправить личное сообщение для rainbowrussia Найти все сообщения от rainbowrussia
  № 10  
Ответить с цитированием
rainbowrussia
 
Аватар для rainbowrussia

Регистрация: Feb 2008
Сообщений: 560
Цитата:
Сообщение от das uberdog Посмотреть сообщение
Ааа...то есть не нужно вообще трогать муви клип, можно скроллер использовать!
Можно было и трогать муви клип, но зачем, если у вас уже есть функция scroll(), которая по положению скроллера вычисляла положение контента. В таком случае целесообразно ее и использовать, ибо если она поменяется - не придется менять в двух местах.

Цитата:
Сообщение от das uberdog Посмотреть сообщение
А чтоб плавно клип подъезжал, как называется функция, что искать в хелпе??
Поищите по форуму про Tween, будут вопросы - задавайте.

upd. Ну или без Tween, примерно так как во вложении.
Вложения
Тип файла: rar scrl3.rar (42.9 Кб, 74 просмотров)


Последний раз редактировалось rainbowrussia; 18.07.2010 в 04:38.
Создать новую тему Ответ Часовой пояс GMT +4, время: 11:39.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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