Простейшая галерея на ActionScript 3.0 и XML

Задача: создать самую-самую простую фото-галерея на ActionScript 3.0 с подгрузкой данных из XML.

Итак, начнём...

Первым делом подберём картинки...

Потом создадим XML-файл. Наш XML будет носить имя simple_gallery.xml. Кстати, вот и он сам - simple_gallery.xml. В этом файле мы будем хранить адреса картинок для нашей будущей галереи (заполняем внимательно и вдумчиво).

Затем идут некоторые подготовительные моменты в флеш-редакторе: в нашем флеш-проекте создадим один мувиклип с именем containerImages_mc (контейнер для картинок) и две кнопки с именами prev_btn и next_btn (для навигации по галерее картинок).

Отлично. Теперь переходим к написанию кода...

Код ActionScript 3.0:

/* переменные */ var images:Array = new Array(); var index:uint = 0; /* загружаем XML */ var loader:URLLoader = new URLLoader(); loader.load(new URLRequest("content/simple_gallery.xml")); loader.addEventListener(Event.COMPLETE, onCompleteLoadXMLFunc); function onCompleteLoadXMLFunc(event:Event):void { /* разбираем XML */ var loadXml:XML = XML(event.target.data); var loadXmlList:XMLList = loadXml.images.children(); for (var i:uint = 0; i < loadXmlList.length(); i++) { images.push(loadXmlList[i].text()); } /* обновляем картинку */ updateFunc(); } /* функция, обновляющая картинки */ function updateFunc():void { /* прячем или показываем кнопки */ if(index == 0) { prev_btn.visible = false; next_btn.visible = true; } else if(index >= (images.length - 1)) { prev_btn.visible = true; next_btn.visible = false; } else { prev_btn.visible = true; next_btn.visible = true; } /* загружаем картинку */ var loader:Loader = new Loader(); loader.load(new URLRequest(images[index])); containerImages_mc.removeChildAt(0); containerImages_mc.addChildAt(loader, 0); } /* код для кнопок */ prev_btn.addEventListener(MouseEvent.CLICK, onClickPrevBtnFunc); next_btn.addEventListener(MouseEvent.CLICK, onClickNextBtnFunc); function onClickNextBtnFunc(e:MouseEvent):void { index++; updateFunc(); } function onClickPrevBtnFunc(e:MouseEvent):void { index--; updateFunc(); }

Ух, поработали... Давайте смотреть, что получилось:

Согласен, можно и покрасивее сделать. Но напомню, что наша цель - самая-самая простая галерея. Поэтому... сойдёт.

Ах, да, исходники - Скачать исходники | Download

Автор: admin

Дата добавления: 2015-11-06

Просмотров: 7988

Рейтинг поста: +6-

Правила перепечатки

Социальные закладки:
Комментарии:
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2016-04-19
Вполне естественные ошибки: это разные языки и код, написанный на AS 3.0, не будет работать в приложении под AS 2.0. Мигрировать, конечно, можно, но совершенно нет такого желания: в AS 2.0 работа с XML крайне запутанно реализована. Сделайте приложение на AS 3.0. Тем более, что исходники прилагаются к уроку.
Комментатор
Комментарий добавил(а): KennyJM
Дата добавления: 2016-04-19
А как реализовать такую же галерею, но только на AS2? Я сделал все, как написано, но при запуске проекта появляются ошибки
"The class or interface "uint" could not be loaded.

The class or interface "URLLoader" could not be loaded.
var loader:URLLoader = new URLLoader();

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 12: The class or interface "Event" could not be loaded.
" function onCompleteLoadXMLFunc(event:Event):void"

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 18: The class or interface "XMLList" could not be loaded.
"var loadXmlList:XMLList = loadXml.images.children();"

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 19: The class or interface "uint" could not be loaded.
"for (var i:uint = 0; i < loadXmlList.length(); i++)"

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 31: A type identifier is expected after the ":".
"function updateFunc():void"

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 54: The class or interface "Loader" could not be loaded.
"var loader:Loader = new Loader();"

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 64: The class or interface "MouseEvent" could not be loaded.
" function onClickNextBtnFunc(e:MouseEvent):void"

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 69: The class or interface "MouseEvent" could not be loaded.
"function onClickPrevBtnFunc(e:MouseEvent):void"

Total ActionScript Errors: 9 Reported Errors: 9"

С первой я справился, тип [b]uint[b] заменил на [b]Number[b], а вот что делать с остальными - не знаю..
Добавить комментарий:







[ + ] помощь по форматирование текста

Идиот-тест

Если все обязательные поля (отмечены * ) заполнены необходимой информацией, то нажимаем кнопку Добавить комментарий.

Меню
Подписка
Рубрики
Метки
Последние комментарии
Рейтинг постов
Реклама
Друзья
География гостей
Статистика
Яндекс.Метрика