![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Добрый вечер. Делаю скрол своими силами и знаниями. Но знаний не много в программировании (я больше аниматор) по этому за возможно ужасный код прошу не бить, а поправить если есть возможность.
В общем сейчас всё работает, но мне нужно как бы плавный старт и финиш прокрутки. Как это можно реализовать я примерно понимаю, но думаю было бы правильным спросить у профи что бы код не выглядел ещё ужаснее. Вод собственно код: 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; } }; } |
|
|||||
|
исходник восьмёрки давайте.
|
|
|||||
|
ну вы сделайте тогда как понимаете, а я "ужасный код" причешу
![]() |
|
|||||
|
Хорошо, вы сами на просились)
По путно возник ещё 1 вопрос. Если Вам не сложно запустите ролик. Вы уведите что сама лента с картинками ровно по краям скрывается под маской. Но по всей видимости в результате не правильныйх округлений когда лента стопорится потому что закончились картинки и его края заезжают в область маски, тоесть такое не большое смещение(другими словами пустое место после окончания ленты видно под маской(примерно 1 пиксель)). Как это можно поправить? |
|
|||||
|
Делать было нечего, поэтому написал вам эту функцию.
К сожалению исходник только CS3, потому что мой CS4 не умеет сохранять в 8м формате. Но если что, напишу код тут. Просто сотрите все, что у вас есть, и вставьте этот код. Проверял - работает. 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; } };
__________________
The right man in the wrong place can make all the difference in the world... Последний раз редактировалось Enfriz; 12.12.2008 в 20:56. |
|
|||||
|
Огромное спасибо. Сейчас гляну.
Да, всё супер. Ещё-раз спасибо Вам. Смотрю на Ваш код и сравниваю со своим и понимаю что это было не ужас, а просто кошмар. Буду учиться... Последний раз редактировалось Art_133; 12.12.2008 в 21:33. |
|
|||||
|
Возник ещё 1 момент который бы хотелось уточнить.
В данный скрол я загружаю картинки через xml. С этим нет проблем. Но появилось условие: нужно что бы скрол был зацикленным. Я поместил все клипы в один контейнер (созданный руками, не программно). Думал сделать 2 дубликата который поставить с лева основного мувика и соответственно с права основного мувика. Каждый раз когда скрол доходит до левого края (к примеру) его перебрасывает на такой-же кусок только с права. Таким образом осуществляется зацикленность (это всё с теории). Но как только я начинаю дублировать мувик в который загрузил картинки он дублируется но пустым, то есть таким как был до загрузки в него картинок. Прилогаю код на загрузку картинок: Blok1 -мувик который пытаюсь продублировать. 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. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
И чему Вы удивляетесь? В хелпе же черным по белому написано - загруженный контент не дублируется методом duplicateMovieClip. Вы совершенно верно обратились к битмапдате - она как раз дублируется сколько угодно. Только еще раз повторюсь - выбросьте loadMovie! Не портите себе жизнь.
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:49. |
|
|
« Предыдущая тема | Следующая тема » |
|
|