![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Jul 2010
Сообщений: 9
|
народ,у меня вот такая проблема
пишу на AS 2.0 создается пустой мувик,в него загружается панорамное изображение,это изображение,естественно,не помещается на экране полностью,нужно сделать прокрутку,то есть схватить мышкой и потащить - перемещение только по горизонтали. два вопроса: 1. как сделать эту самую прокрутку? 2. как зациклить изображение - то есть,когда должен уже показаться край мувика,необходимо соединить начало и конец,чтобы картинка казалась непрерывной? |
|
|||||
|
Регистрация: May 2007
Сообщений: 14
|
Вот меня тоже такие вопрос интересуют.
|
|
|||||
|
Регистрация: Oct 2010
Адрес: Свердловск
Сообщений: 77
|
Наваял по-быстрому
Код подействует при условиях: - нужно 2 панорамы которые находятся друг к другу впритык; - "шов" этих двух панорам должен быть по центру MovieClip, в котором находится - высота панорамы == высоте кадра; код в кадр: 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; // ... ставим ее центр (шов) в начало координаты х } }; Есть конечно вариант без скроллинга с помощью нажатия и перетаскивания, но просили именно с перетаскиванием, но вот, на всякий случай: 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. |
|
|||||
|
Регистрация: Jul 2010
Сообщений: 9
|
уважаемый Dalass13,с прокруткой проблема решена:
а вот с зацикливанием большие проблемы.У меня методом createMovieClip создается пустой мувик,затем в нем создается еще 8 пустых муви,и затем в них загружаются картинки. |
|
|||||
|
Регистрация: Oct 2010
Адрес: Свердловск
Сообщений: 77
|
Можно подробнее насчет кучи этих MC. Для чего конкретно они нужны?
|
|
|||||
|
Регистрация: Jul 2010
Сообщений: 9
|
по порядку:
самый первый мс - в качестве контейнера все остальные,которые в нем создаются - тоже контейнеры,в каждый из них загружается внешнее изображение(фотография) методом loadClip.Далее - они выстраиваются в линейку,чтобы из нескольких отдельных фото получилось панорамное изображение и вот теперь возникает вопрос,на который пытаюсь найти ответ. |
|
|||||
|
Регистрация: Oct 2010
Адрес: Свердловск
Сообщений: 77
|
Дак я же сказал уже. В твоем случае:
- начни ставить фотографии с середины кадра, т.е. ширина кадра - 500, ставишь на х=250 - от первой фотки выстраиваешь все остальные до конца - затем ставишь еще дополнительно последнюю фотку ПЕРЕД первой - используй алгоритм, который я предложил, но с немного другими условиями. То есть слева у тебя будет проверка только по половиной толщине одного фото и перенос на стык между 5 и 6 фото, а справа по половиной толщине шестого и перенос на стык между 1 и 2 . Знаю, что трудно понять, о чем я. Если бы инет не вырубили, написал бы алгоритм, а т.к. сижу с телефона, такой возможности нет Последний раз редактировалось Dalass13; 01.03.2011 в 08:50. |
|
|||||
|
Регистрация: Jul 2010
Сообщений: 9
|
вот мой код:
/*идея уже такая - если загрузить в конец контейнера еще одну картинку - копию первой.Тогда можно будет просто сдвигать весь клип с картинками на определенную координату,чтобы изображение казалось циклическим.Создаются два пустых мувика,ставятся по координате Х срава и слева от контейнера.Двигаем,значит,наш мув - если есть пересечение с пограничным,мы его возвращаем так,чтобы всегда видеть первый(или последний)фрагмент.Вот,не работает((*/ 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. |
|
|
« Предыдущая тема | Следующая тема » |
|
|