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

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

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

Регистрация: Jul 2010
Сообщений: 9
По умолчанию панорама - как организовать прокрутку по горизонтали и зациклить изображение

народ,у меня вот такая проблема

пишу на AS 2.0
создается пустой мувик,в него загружается панорамное изображение,это изображение,естественно,не помещается на экране полностью,нужно сделать прокрутку,то есть схватить мышкой и потащить - перемещение только по горизонтали.

два вопроса:
1. как сделать эту самую прокрутку?
2. как зациклить изображение - то есть,когда должен уже показаться край мувика,необходимо соединить начало и конец,чтобы картинка казалась непрерывной?

Старый 27.02.2011, 01:49
RolleR25 вне форума Посмотреть профиль Отправить личное сообщение для RolleR25 Найти все сообщения от RolleR25
  № 2  
Ответить с цитированием
RolleR25

Регистрация: May 2007
Сообщений: 14
Вот меня тоже такие вопрос интересуют.

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

Регистрация: Oct 2010
Адрес: Свердловск
Сообщений: 77
Наваял по-быстрому

Код подействует при условиях:

- нужно 2 панорамы которые находятся друг к другу впритык;
- "шов" этих двух панорам должен быть по центру MovieClip, в котором находится
- высота панорамы == высоте кадра;

код в кадр:

Код AS1/AS2:
panorama.onPress = function() {
	startDrag(this);
};
 
 
panorama.onRelease = function() {
	panorama._y = _root._height/2; // панорама всегда центрирована по вертикали
	stopDrag();
};
 
panorama.onReleaseOutside = panorama.onRelease;
 
this.onEnterFrame = function() {
	panorama._y = _root._height/2;
           //если панорама достигает предела с правой стороны...
	if (panorama._x<-panorama._width/2+_root.width ) {
		panorama._x = _root._width; // ...ставим ее центр (шов) в конец координаты х
	}
           //если панорама достигает предела с левой стороны...
	if (panorama._x>panorama._width/2) {
		panorama._x = 0; // ... ставим ее центр (шов) в начало координаты х
	}
};
проблема кода - можно на 1 долю секунды перетащить панораму по _у, но с этим разобраться грамотно не было времени, может кто подхватит

Есть конечно вариант без скроллинга с помощью нажатия и перетаскивания, но просили именно с перетаскиванием, но вот, на всякий случай:

Код AS1/AS2:
this.onEnterFrame = function() {
         // у меня ширина кадра 500
         // если мышь находится в правой стороне экрана...
	if (_xmouse>250) {
		panorama._x -= (_xmouse -250)/15; // ...скроллим панораму вправо
	}
        // если мышь находится в левой стороне экрана...
	if (_xmouse<250) {
		panorama._x += (250 -_xmouse)/15;// ...скроллим панораму влево
	}
	//если панорама достигает предела с правой стороны...
	if (panorama._x<-panorama._width/2+_root.width ) {
		panorama._x = _root._width; // ...ставим ее центр (шов) в конец координаты х
	}
        //если панорама достигает предела с левой стороны...
	if (panorama._x>panorama._width/2) {
		panorama._x = 0; // ... ставим ее центр (шов) в начало координаты х
	}
};


Последний раз редактировалось Dalass13; 27.02.2011 в 11:05.
Старый 28.02.2011, 13:47
fire вне форума Посмотреть профиль Отправить личное сообщение для fire Найти все сообщения от fire
  № 4  
Ответить с цитированием
fire

Регистрация: Jul 2010
Сообщений: 9
уважаемый Dalass13,с прокруткой проблема решена:

Код AS1/AS2:
mc.onMouseDown = function(){
		this.startDrag(false,-this._width*2,0,this._width*2,0);
		}
 
	mc.onMouseUp = function(){
		this.stopDrag();
		}
а вот с зацикливанием большие проблемы.У меня методом createMovieClip создается пустой мувик,затем в нем создается еще 8 пустых муви,и затем в них загружаются картинки.

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

Регистрация: Oct 2010
Адрес: Свердловск
Сообщений: 77
Можно подробнее насчет кучи этих MC. Для чего конкретно они нужны?

Старый 01.03.2011, 07:39
fire вне форума Посмотреть профиль Отправить личное сообщение для fire Найти все сообщения от fire
  № 6  
Ответить с цитированием
fire

Регистрация: Jul 2010
Сообщений: 9
по порядку:

самый первый мс - в качестве контейнера
все остальные,которые в нем создаются - тоже контейнеры,в каждый из них загружается внешнее изображение(фотография) методом loadClip.Далее - они выстраиваются в линейку,чтобы из нескольких отдельных фото получилось панорамное изображение
и вот теперь возникает вопрос,на который пытаюсь найти ответ.

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

Регистрация: Oct 2010
Адрес: Свердловск
Сообщений: 77
Дак я же сказал уже. В твоем случае:

- начни ставить фотографии с середины кадра, т.е. ширина кадра - 500, ставишь на х=250
- от первой фотки выстраиваешь все остальные до конца
- затем ставишь еще дополнительно последнюю фотку ПЕРЕД первой
- используй алгоритм, который я предложил, но с немного другими условиями. То есть слева у тебя будет проверка только по половиной толщине одного фото и перенос на стык между 5 и 6 фото, а справа по половиной толщине шестого и перенос на стык между 1 и 2 .

Знаю, что трудно понять, о чем я. Если бы инет не вырубили, написал бы алгоритм, а т.к. сижу с телефона, такой возможности нет


Последний раз редактировалось Dalass13; 01.03.2011 в 08:50.
Старый 01.03.2011, 14:43
fire вне форума Посмотреть профиль Отправить личное сообщение для fire Найти все сообщения от fire
  № 8  
Ответить с цитированием
fire

Регистрация: Jul 2010
Сообщений: 9
вот мой код:
/*идея уже такая - если загрузить в конец контейнера еще одну картинку - копию первой.Тогда можно будет просто сдвигать весь клип с картинками на определенную координату,чтобы изображение казалось циклическим.Создаются два пустых мувика,ставятся по координате Х срава и слева от контейнера.Двигаем,значит,наш мув - если есть пересечение с пограничным,мы его возвращаем так,чтобы всегда видеть первый(или последний)фрагмент.Вот,не работает((*/

Код AS1/AS2:
stop();
 
//создается пустой MovieClip с именем mc
this.createEmptyMovieClip("mc", this.getNextHighestDepth());
 
//заполняется мувиками (около 8)
mc.createEmptyMovieClip("mc1",this.getNextHighestDepth()+1);
mc.createEmptyMovieClip("mc2",this.getNextHighestDepth()+2);
mc.createEmptyMovieClip("mc3",this.getNextHighestDepth()+3);
mc.createEmptyMovieClip("mc4",this.getNextHighestDepth()+4);
mc.createEmptyMovieClip("mc5",this.getNextHighestDepth()+5);
mc.createEmptyMovieClip("mc6",this.getNextHighestDepth()+6);
mc.createEmptyMovieClip("mc7",this.getNextHighestDepth()+7);
mc.createEmptyMovieClip("mc8",this.getNextHighestDepth()+8);
mc.createEmptyMovieClip("mc9",this.getNextHighestDepth()+9);
 
this.createEmptyMovieClip("cLeft",this.getNextHighestDepth());
this.createEmptyMovieClip("cRight",this.getNextHighestDepth());
 
			cLeft._width = 20;
			cLeft._height = 50;
 
			cRight._width = 20;
			cRight._height = 50;
 
 
 
 
mc._xscale = 50;
mc._yscale = 36;
 
mc.mc1.loadMovie("cont/1.jpg");
 
mclip1 = new MovieClipLoader();
 
_global.i=2;
//	_global.xcoord = 0;
 
var loadListener:Object = new Object;
	loadListener.onLoadInit = function(mcl:MovieClip){
		a = _global.i;
		a--;
		mc["mc"+_global.i]._x=mc["mc"+a]._x+mc["mc"+a]._width;
		_global.i++;
		mclip1.loadClip("cont/"+_global.i+".jpg", _root.mc["mc"+_global.i]);
 
			cLeft._x = -mc._width+mc.mc1._width;
			cRight._x = mc._width+mc.mc1._width;
 
			cLeft._width = 20;
			cLeft._height = 50;
 
			cRight._width = 20;
			cRight._height = 50;
		}
 
	mclip1.addListener(loadListener);
	mclip1.loadClip("cont/"+_global.i+".jpg", _root.mc["mc"+_global.i]);
 
	delete loadListener;
	delete mclip;
 
 
	mc.onMouseDown = function(){
//тут проверяю на пересечение с клипом-границей слева.Если есть пересечение,сдвигаем картинку
//НЕ РАБОТАЕТ
			if(mc.hitTest(cLeft)==true){
			mc._x += mc._width-mc.mc1._width;}else{
			trace(mc._x);
			}
		this.startDrag(false,-this._width*2,0,this._width*2,0);
		}
 
	mc.onMouseUp = function(){
		this.stopDrag();
 
		trace(cLeft._x);
		trace(cRight._x);
 
		}
может,подскажете,где косяк утаился?

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

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

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


 


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


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