|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Неполадки с загрузкой картинок с помощью XML
Здравствуйте, эксперты дорогие)
Помогите, кто чем сможет... Такая вот проблемка. Скачал я исходник галереи от сюдова. Мне нужно было переделать чучуть в другую. В общем мне нужно, чтобы вверху до полоски были фотографии, одна посередине, две сбоку не полные. При нажатии допустим на клавишу "Некст" та картинка которая была справа от главной перемещается теперь на середину и естественно становится главной. все картинки должны плотно лежать друг за другом. те картинки которые по бокам ещё и затемняться должны но это потом реализуется само собой ... Вот я придумал схему как мне сделать: 1. Выстроить все фотки начиная с первой и придумал такой вот алгоритм, только его надо смотреть в общем коде я покажу как он выглядит а вы гляньте на него в исходнике целиком: mc._y = (480 - arr[i]._height)/2; if(i != 0){ mc._x = arr[i - 1] + starta; starta += mc.x; }else{ mc._x = (1010 - arr[0].width)/2; starta += mc._x; } 2. При нажатии на кнопку вперёд или назад всем мувиклипам в координату Х добавляется сдвиг который равен ширине главной картинки, которая меняется на другую. Вот только плавность я не придумал как, может через цикл for замудрить?) Как бы это было предисловие, как бы и вопрос. В ообщем помогите разрешить проблему с загрузкой картинок и скажите правильно ли я мыслю на счёт алгоритма загрузки и перемещения картинок? З.ы. Я делаю эту галерею на подобии вот этой только немного со своими заморочками) З.з.ы. Я уже создавал тему здесь, но не правильно. Я сам начал делать, но всё же появилась проблема, прошу помочь мне З.з.з.ы. |
|
|||||
разделом, вероятно, ошиблись. а вообще, настораживает пара строк:
starta += mc.x; starta += mc._x;
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
|
|||||
Да извините, забыл что на As2 делал
Вот собственно почти весь код: import flash.display.BitmapData; import mx.transitions.*; import mx.transitions.easing.*; /*служебные переменные*/ var xml_url:String = 'gallery1.xml';//адрес xml файла var flag:Boolean = true;//флаг для проверки // var YPan:Number = 480;//Координата панели var XPan:Number = 0;//Координата панели // var photo_obj:Object = {};//создаем объект для хранения служебной информации photo_obj.__width = 450;//ширина фоток photo_obj.__height = 480;//высота фоток photo_obj.__length = 0;//кол-во фоток в галерее photo_obj.__bx = 505;//начальное положение фоток по x photo_obj.__by = 240;//начальное положение фоток по y // var target_mc:MovieClip = this.createEmptyMovieClip('target_mc', 2);//создаем клип-родитель для фоток var hint_mc:MovieClip = this.createEmptyMovieClip('hint_mc', 4); // /*XML - качаем и парсим наш XML*/ var myXML:XML = new XML(); myXML.ignoreWhite = true; myXML.onLoad = function(suc) { if (suc) { var img_arr:Array = xml_parsing(this.firstChild.childNodes);//получаем массив с адресами фоток photo_load(img_arr);//запускаем функцию загрузки фоток photo_obj.__length = img_arr.length;//запоминаем кол-во фоток } }; myXML.load(xml_url); /*xml_parsing - функция принимает childNodes, а возвращает уже массив с адресами и комментариями фоток*/ function xml_parsing(arr:Array):Array { var return_arr:Array = []; for (var i = 0; i<arr.length; i++) { var photo:String = arr[i].attributes.url;//адреса картинок var title:String = arr[i].attributes.title;//комментарии var avtor:String = arr[i].attributes.avtor;//фотограф var caption:String = arr[i].attributes.caption;// var width:String = arr[i].attributes.width;//ширина var height:String = arr[i].attributes.height;//высота return_arr.push({_photo:photo, _title:title, _avtor:avtor, _caption:caption, _width:width, _height:height}); } return return_arr; } var starta:Array; /*photo_load*/ function photo_load(arr:Array) { for (var i = 0; i<arr.length; i++) { var mc:MovieClip = target_mc.createEmptyMovieClip('mc'+i, i);//основной клип var pic:MovieClip = mc.createEmptyMovieClip('pic', 2);//клип для загрузки var bmp_mc:MovieClip = mc.createEmptyMovieClip('bmp_mc', 4);//клип для битмапы /*Выстраиваем фото в ряд*/ mc._y = (480 - arr[i]._height)/2; if(i != 0){ mc._x = arr[i - 1] + starta; starta += mc._x; }else{ mc._x = (1010 - arr[0].width)/2; starta += mc._x; } // mc.__title = arr[i]._title;//запоминаем комментарии mc.__avtor = arr[i]._avtor;//запоминаем авторов mc.__caption = arr[i]._caption;// mc.__width = arr[i]._width;//запоминаем ширину mc.__height = arr[i]._height;//запоминаем высоту mc.__i = i;//запоминаем порядковый номер фотки // NextK.onPress = function(){ if (flag) { zoom_plus(this); flag = false; } else { zoom_minus(this); flag = true; } } // PrevK.onPress = function() { _enabled(this,false); if (flag) { zoom_plus(this); flag = false; } else { zoom_minus(this); flag = true; } }; // var mcl:MovieClipLoader = new MovieClipLoader();//создаем лоадер var mcl_obj:Object = {};//и его слушатель mcl.addListener(mcl_obj);//подписываем mcl.loadClip(arr[i]._photo,pic);//и грузим фотки // mcl_obj.onLoadInit = function(pic:MovieClip) {//когда загрузка завершена var mc:MovieClip = pic._parent; var bmp_mc:MovieClip = mc.bmp_mc; load_txt._visible = false; // var bmp:BitmapData = new BitmapData(pic._width, pic._height, true, 0);//создаем битмапдату bmp.draw(pic);//"фоткаем" загруженную фотку bmp_mc.attachBitmap(bmp,2,'auto',true);//аттачим битмапу в клип pic.removeMovieClip();//удаляем клип }; } } |
|
|||||
ОМГ о_О
смотрите MovieClipLoader.unloadClip вместо геморроя с битмапдатой смотрите Tween для плавностей
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
|
|||||
- А какой алгоритм использования MovieClipLoader.unloadClip ?
- Вот вопрос по Tween как раз... Там написано что в скобках надо указать функцию, начальное значение и конечное... а какая функция отвечает за перемещение картинки, ну или мувика? Или надо просто создать самому функцию, а если так, то как оно будет распознавать начальное и конечное значение? Или просто этот Tween постепенно прибавляет определенное значение в допустим Function фун. (значение){} то есть кидает это значение в скобки функции, а функция всё делает используя это значение?.. З.ы. просто я пока не очень разбираюсь то в ActionScript а тем более что и где как называется Надеюсь вы поймете что я там понаписывал)) |
|
|||||
есть штука help .
там можно набрать поиск по интересующей теме. по крайней мере до CS3 включительно help был в комплекте с самой программой. очень нужная штука временами.
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
|
|||||
Ну так вроде бы в хелпе смотрел про Tween, (если что у меня CS4) может я не там посмотрел, но там не полностью описывается. там только расказывается какие переменные нужно вносить в скобки... вот я и спросил про функцию ... Тем более про Tween я нашел только в AS3, в AS2 такого не было.
http://help.adobe.com/en_US/AS3LCR/F...n.html#Tween() Вот что я читал. Может не то? А об MovieClipLoader.unloadClip я спросил просто, чтобы понять что мне удалить из моего кода а что оставить ... Можете хотя бы пример использования показать?) Потому что в хелпе написаны лишь возможности класса, а мне хотя бы алгоритм посмотреть, чтобы я этими возможностями мог воспользоваться ... Подскажите?) |
|
|||||
Регистрация: Aug 2009
Сообщений: 2
|
так что ли? анимацию сам можешь добавить используя твин или greensock как тебе удобнее.
________________ привет из стронга |
|
|||||
АААА ... ПАСИБА Ща буду разбираться
__________ Вас понял)) |
Часовой пояс GMT +4, время: 14:56. |
|
« Предыдущая тема | Следующая тема » |
Теги |
xml , галерея |
|
|