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

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

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

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
По умолчанию Горизонтальный скролл. Как сделать плавный старт и конец прокрутки?

Добрый вечер. Делаю скрол своими силами и знаниями. Но знаний не много в программировании (я больше аниматор) по этому за возможно ужасный код прошу не бить, а поправить если есть возможность.
В общем сейчас всё работает, но мне нужно как бы плавный старт и финиш прокрутки. Как это можно реализовать я примерно понимаю, но думаю было бы правильным спросить у профи что бы код не выглядел ещё ужаснее.

Вод собственно код:
Код AS1/AS2:
var posX:Number = scrolled._x;
var scrolledWidth = scrolled._width;
 
var dif1 = Math.floor(scrolled._x-(scrolled._width-masker._width));
trace(dif1);
 
scrolled.setMask(masker);
 
r_arrov.onRollOver = moveRight;
 
r_arrov.onRollOut = function() {
	delete onEnterFrame;
};
 
l_arrov.onRollOver = moveLeft;
 
l_arrov.onRollOut = function() {
	delete onEnterFrame;
};
 
function moveRight() {
	onEnterFrame = function () {
		if (scrolled._x<posX) {
			scrolled._x += 1;
		}
	};
}
 
function moveLeft() {
	onEnterFrame = function () {
		if (dif1<scrolled._x) {
			scrolled._x -= 1;
		}
	};
}
И исходник. За ранее спасибо!
Вложения
Тип файла: rar delete.rar (5.9 Кб, 123 просмотров)

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

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
исходник восьмёрки давайте.

Старый 12.12.2008, 12:12
Art_133 вне форума Посмотреть профиль Отправить личное сообщение для Art_133 Посетить домашнюю страницу Art_133 Найти все сообщения от Art_133
  № 3  
Ответить с цитированием
Art_133
 
Аватар для Art_133

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
Исходник под 8-й
Вложения
Тип файла: rar Scroller2.rar (7.5 Кб, 116 просмотров)

Старый 12.12.2008, 16:42
Art_133 вне форума Посмотреть профиль Отправить личное сообщение для Art_133 Посетить домашнюю страницу Art_133 Найти все сообщения от Art_133
  № 4  
Ответить с цитированием
Art_133
 
Аватар для Art_133

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
Не ужели никто не может помочь? Я не прошу написать код за меня, просто по советуйте (если не сложно) примерный путь решения задачи...

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

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
ну вы сделайте тогда как понимаете, а я "ужасный код" причешу

Старый 12.12.2008, 17:31
Art_133 вне форума Посмотреть профиль Отправить личное сообщение для Art_133 Посетить домашнюю страницу Art_133 Найти все сообщения от Art_133
  № 6  
Ответить с цитированием
Art_133
 
Аватар для Art_133

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
Хорошо, вы сами на просились)
По путно возник ещё 1 вопрос.
Если Вам не сложно запустите ролик. Вы уведите что сама лента с картинками ровно по краям скрывается под маской. Но по всей видимости в результате не правильныйх округлений когда лента стопорится потому что закончились картинки и его края заезжают в область маски, тоесть такое не большое смещение(другими словами пустое место после окончания ленты видно под маской(примерно 1 пиксель)). Как это можно поправить?

Старый 12.12.2008, 20:52
Enfriz вне форума Посмотреть профиль Отправить личное сообщение для Enfriz Посетить домашнюю страницу Enfriz Найти все сообщения от Enfriz
  № 7  
Ответить с цитированием
Enfriz

Регистрация: Dec 2008
Адрес: Санкт-Петербург
Сообщений: 7
Отправить сообщение для Enfriz с помощью ICQ
Делать было нечего, поэтому написал вам эту функцию.
К сожалению исходник только CS3, потому что мой CS4 не умеет сохранять в 8м формате.

Но если что, напишу код тут. Просто сотрите все, что у вас есть, и вставьте этот код. Проверял - работает.

Код AS1/AS2:
friction = 50;//степень торможения. Чем больше число, тем дольше тормозит.
long = 50;//длина пробега торможения, тоже влияет на скорость движения. Чем длиннее пробег, тем больше сокрость.
 
//соотоншение long/friction будет задавать скорость движения самой линейки. Чем больше это отношение, тем выше скорость.
 
left = Math.floor(scrolled._x-(scrolled._width-masker._width));//координата левого крайнего положения
right = scrolled._x;//и правого
 
scrolled.setMask(masker);//ставим маску
current = right;//координата текущего положения
 
l_arrov.onRollOver = function() {
	current = long/friction;//в данном случае current будет скоростью движения
	movingleft = true;
	movingright = false;
};
 
l_arrov.onRollOut = function() {
	c = scrolled._x-long;
	if (c<left) {
		current = left;//чтобы не зашло за край
	} else {
		current = c;//текущее положение минус длина пробега, чтобы линейка успела затормозить
	}
	movingleft = false;
	movingright = false;
};
 
r_arrov.onRollOver = function() {
	current = -long/friction;//все аналогично
	movingleft = false;
	movingright = true;
};
 
r_arrov.onRollOut = function() {
	c = scrolled._x+long;
	if (c>right) {
		current = right;
	} else {
		current = c;
	}
	movingleft = false;
	movingright = false;
};
_root.onEnterFrame = function() {
	if (movingleft or movingright) {
		if (scrolled._x<left+long && movingleft) {
			distance = scrolled._x-left;//в случае приближения к краю начинается торможение
			scrolled._x -= distance/friction;
		} else if (scrolled._x>right-long && movingright) {
			distance = right-scrolled._x;//аналогично
			scrolled._x += distance/friction;
		} else {
			scrolled._x -= current;//обычное линейное движение (далеко от краев)
		}
	} else { //торможение при отпускании стрелки
		distance = scrolled._x-current;//расстояние до точки, к которой стремится линейка
		scrolled._x -= distance/friction;
	}
};
Вложения
Тип файла: rar ScrollerCS3.rar (6.3 Кб, 189 просмотров)
__________________
The right man in the wrong place can make all the difference in the world...


Последний раз редактировалось Enfriz; 12.12.2008 в 20:56.
Старый 12.12.2008, 21:22
Art_133 вне форума Посмотреть профиль Отправить личное сообщение для Art_133 Посетить домашнюю страницу Art_133 Найти все сообщения от Art_133
  № 8  
Ответить с цитированием
Art_133
 
Аватар для Art_133

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
Огромное спасибо. Сейчас гляну.
Да, всё супер. Ещё-раз спасибо Вам. Смотрю на Ваш код и сравниваю со своим и понимаю что это было не ужас, а просто кошмар. Буду учиться...


Последний раз редактировалось Art_133; 12.12.2008 в 21:33.
Старый 24.12.2008, 13:19
Art_133 вне форума Посмотреть профиль Отправить личное сообщение для Art_133 Посетить домашнюю страницу Art_133 Найти все сообщения от Art_133
  № 9  
Ответить с цитированием
Art_133
 
Аватар для Art_133

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
Возник ещё 1 момент который бы хотелось уточнить.
В данный скрол я загружаю картинки через xml. С этим нет проблем. Но появилось условие: нужно что бы скрол был зацикленным. Я поместил все клипы в один контейнер (созданный руками, не программно). Думал сделать 2 дубликата который поставить с лева основного мувика и соответственно с права основного мувика. Каждый раз когда скрол доходит до левого края (к примеру) его перебрасывает на такой-же кусок только с права. Таким образом осуществляется зацикленность (это всё с теории).
Но как только я начинаю дублировать мувик в который загрузил картинки он дублируется но пустым, то есть таким как был до загрузки в него картинок.
Прилогаю код на загрузку картинок:
Blok1 -мувик который пытаюсь продублировать.
Код AS1/AS2:
var my_xml:XML = new XML();
my_xml.ignoreWhite = true;
 
my_xml.load('content.xml');
my_xml.onLoad = function(success:Boolean) {
	if (success) {
		var xml = my_xml.firstChild.childNodes;
		var xml2 = my_xml.childNodes[1].childNodes;
		for (var i = 0; i < xml2.length; i++) {
			var newX = i * (_root.scrolled.block1._item._width + space);
			diplicate = _root.scrolled.block1._item.duplicateMovieClip('_item' + i, i, {_x:newX});
			diplicate.mc.loadMovie(xml2[i].attributes.pic);
			diplicate.lnk = xml2[i].attributes.url;
			diplicate.onRelease = function() {
				getURL(this.lnk, '_blank');
				trace(this.lnk);
				scrollingOn = true;
			};
		}		
	} else {
		trace('error');
	}
};
Помогите советом. Спасибо.


Последний раз редактировалось Art_133; 24.12.2008 в 13:31.
Старый 24.12.2008, 19:25
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 10  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
И чему Вы удивляетесь? В хелпе же черным по белому написано - загруженный контент не дублируется методом duplicateMovieClip. Вы совершенно верно обратились к битмапдате - она как раз дублируется сколько угодно. Только еще раз повторюсь - выбросьте loadMovie! Не портите себе жизнь.
__________________
Reality.getBounds(this);

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

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

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


 


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


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