![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Здравствуйте.
Делаю скрол картинок. Гружу в него картинки через xml циклом. Но они при анимации коробятся, и плохо выглядят. Думаю allow smoothing исправит ситуацию. Но как это сделать пока немного не ясно. Вот пример: import flash.display.*; 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; for (var i = 0; i < xml2.length; i++) { var newX = i * (_root.scrolled.all.block._item._width + space); diplicate = _root.scrolled.all.block._item.duplicateMovieClip('_item' + i, i, {_x:newX}); diplicate.mc.loadMovie(xml2[i].attributes.pic); diplicate.lnk = xml2[i].attributes.url; //Здесь по идее код который делает каждую картинку сглаженной. Но вот как толком его применить ума не приложу, по этому пишу как я делаю и как не работает) var bmpData1:BitmapData = new BitmapData(1000, 1000, true, 0x0); bmpData1.draw(diplicate.mc); diplicate.mc.attachBitmap(bmpData1,2,"auto",true); // diplicate.onRelease = function() { getURL(this.lnk, '_blank'); trace(this.lnk); }; } } else { trace('error'); } }; |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Для начала перестаньте использовать метод из прошлого века loadMovie, и используйте нормальный АС2 MovieClipLoader. Возможно, тогда при отрисовке битмапдаты картинка в отрисовываемый клип уже будет загружена. Сейчас Вы рисуете в битмапдату пустоту.
__________________
Reality.getBounds(this); |
|
|||||
|
.
|
1. Я так понимаю отрисовывать при
Да 2. Создавать MovieClipLoader и слушателя к нему в цикле и там же удалять после загрузки? Создавать один раз. Вне цикла, естессно. Либо в этом цикле проверять, что ОНО уже создано (это накладнее). Удалять после загрузки всего интересующего контента. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
1. Да
2. Нет. Создавать перед запуском цикла один лоадер, а листенер вообще не надо создавать - их у Вас полно, можете любой объект использовать как листенер. Обычно используют this. По-хорошему вообще цикла быть не должно, а должна быть последовательная загрузка (поищите в поиске, тут много раз обсуждалось) - это когда вторая картинка ставится на загрузку только после того, как наступило онЛоадИнит первой картинки. (рекурсия). С этим правда очень важно разобраться и научиться раз и навсегда делать загрузку удобной, со всеми событиями слежения и тп. Посмотрите тут для примера (там не все гладко, но хоть суть уловите) : http://flasher.ru/forum/showpost.php...6&postcount=21
__________________
Reality.getBounds(this); |
|
|||||
|
.
|
Wolsh, а в чем проблема грузить сразу по несколько (2-10) ресурсов одновременно? Простейший LoaderQueue справится с этой задачей. Другой вопрос, если внешних ресурсов очень много. Тогда, чтобы предотвратить "лаги" на клиенте, нужно ограничивать количество одновременно грузящихся ресурсов вышеназванным количеством.
Upd: А при чем здесь рекурсия? Последний раз редактировалось dimarik; 25.12.2008 в 00:22. |
|
|||||
|
Wolsh Спасибо за наводку. Меня самого напрягает одновременная загрузка картинок циклом.
Добавлено через 11 минут Если можно покажите пожалуйста простой пример. Немного не ясно как использовать один из присутствующих объектов как слушатель. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
dimarik - Я раньше делал циклом, причем и лоадеры с листенерами создавал для каждой картинки, и было все замечательно, пока смотришь дома на локале))) Но фишка в том, что браузеры по-разному поддерживают многопоточную загрузку - кто 10 потоков одновременно, кто только пять. Мало того, эту цифру обычно юзер может указать своему браузеру в настройках, и тут уж мы вообще бессильны. Поэтому теперь рекомендую последовательную загрузку, но не настаиваю, решайте сами. По мне так и появляющиеся по-очереди картинки выглядят эстетичнее))) и проще обеспечить упорядоченное расположение на странице, если важен порядок... В общем вот так. А замедление в скорости практически незаметно и даже скрашивается тем, что у Вас постоянно происходит появление нового изображения на сцене, некая динамика))) А не так что минуту ждете, а потом как из ведра полсотни картинок высыпалось, на сцене все прыгает-скачет, перестраиваясь (потому что загружается то третья в пятом ряду, то вторая в первом - в зависимости от веса). Не убедил?)))))
ps Рекурсия в смысле вызова функцией самой себя и в смысле прохода по XML или массиву без помощи цикла. А может и не в тему ляпнул)))) в действительности здесь функция не вызывает сама себя, а только процесс, который приведет к ее вызову))) Вы правы. Art_133
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 25.12.2008 в 12:03. |
|
|||||
|
Спасибо! Теперь всё ясно.
Добавлено через 2 минуты Есть вопрос. После загрузки всех картинок я отрисовываю клип с этими картинками и дублирую его. А вот мне интересно как себя поведут кнопки. Ведь на этих клипах кнопки ссылки на которые тоже подгружены из xml. Они останутся после отрисовки в битамп? |
|
|||||
|
Регистрация: May 2009
Сообщений: 7
|
а хмл выложить можно?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 10:35. |
|
|
« Предыдущая тема | Следующая тема » |
|
|