Загрузка внешнего xml на AS3
Добавлено: 11 окт 2012, 22:46
Недавно взялся за изучение AS3 и вот, как это обычно бывает с новичками, мне нужна помощь спецов.
Хочу сделать галерею, в которую будут подгружаться фото с внешнего xml файла, в котором прописаны ссылки на фото.
Нужна такая схема
файл swf будет открываться на html странице и считывать ссылки на фото с внешнего xml (например отсюда http://www.site.ru/flapps.xml). Фото будут лежать в той же директории, что и xml.
Вот структура xml
Есть код на AS2 (нужно перевести его на AS3). В нем идет подзагрузка локального xml (мне же нужна подзагрузка внешнего xml)
На сцене расположено 3 объекта:
1.my_tree - это древовидный список фотографий
2.my_ldr - это поле, в которой подгружается фотография, выбранная из списка my_tree
3.my_pb - это прогресс бар, который показывает степень загрузки фото.
Читал статьи о том, как нужно подгружать внешний xml на AS3 (но так, как верхний код написан на AS2, мне сложно разобраться - я новичек)
Вот пример на As3
Как написал автор, эта часть кода служит для загрузки обновленной версию xml
(Я собираюсь часто обновлять xml файл....добавлять в него новые ссылки на фото)
Прошу, помогите мне объединить эти два куска кода на разных версиях AS в один код на AS3.
Вот ссылки на файлы с исходниками
1. Первый код на AS2 http://rghost.ru/40880197
2. Второй код на AS3 http://rghost.ru/40880232
Хочу сделать галерею, в которую будут подгружаться фото с внешнего xml файла, в котором прописаны ссылки на фото.
Нужна такая схема
файл swf будет открываться на html странице и считывать ссылки на фото с внешнего xml (например отсюда http://www.site.ru/flapps.xml). Фото будут лежать в той же директории, что и xml.
Вот структура xml
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?><tree> <node label="Галерея 1"> <node label="картинка 1" src="DCP_0730.jpg" /> <node label="картинка 2" src="DCP_0731.jpg" /> <node label="картинка 3" src="DCP_0732.jpg" /> <node label="картинка 4" src="DCP_0733.jpg" /> <node label="картинка 5" src="DCP_0734.jpg" /> </node> <node label="Галерея 2"> <node label="картинка 1" src="DCP_0730.jpg" /> <node label="картинка 2" src="DCP_0731.jpg" /> <node label="картинка 3" src="DCP_0732.jpg" /> <node label="картинка 4" src="DCP_0733.jpg" /> <node label="картинка 5" src="DCP_0734.jpg" /> </node></tree> Есть код на AS2 (нужно перевести его на AS3). В нем идет подзагрузка локального xml (мне же нужна подзагрузка внешнего xml)
Код: Выделить всё
var my_pb:mx.controls.ProgressBar;var my_ldr:mx.controls.Loader;var my_tree:mx.controls.Tree; my_pb._visible = false;my_pb.indeterminate = true;my_pb.setSize(160, 30);my_pb.source = my_ldr;my_pb.mode = "polled";var pbListener:Object = new Object();pbListener.complete = function(evt:Object) { evt.target._visible = false;};my_pb.addEventListener("complete", pbListener); var treeDP_xml:XML = new XML();treeDP_xml.ignoreWhite = true;treeDP_xml.onLoad = function(success:Boolean) { if (success) { my_tree.dataProvider = this.firstChild; }}; treeDP_xml.load("gallery_tree.xml");var treeListener:Object = new Object();treeListener.change = function(evt:Object) { var treeNode:XMLNode = evt.target.selectedItem; if (treeNode.attributes.src != undefined) { my_pb._visible = true; my_ldr.load(treeNode.attributes.src); }};my_tree.addEventListener("change", treeListener); 1.my_tree - это древовидный список фотографий
2.my_ldr - это поле, в которой подгружается фотография, выбранная из списка my_tree
3.my_pb - это прогресс бар, который показывает степень загрузки фото.
Читал статьи о том, как нужно подгружать внешний xml на AS3 (но так, как верхний код написан на AS2, мне сложно разобраться - я новичек)
Вот пример на As3
Код: Выделить всё
import flash.net.*; import flash.events.*; import flash.display.Sprite; import flash.text.TextField; var loader:URLLoader = new URLLoader(); loader.load(new URLRequest("http://mega-tv.do.am/xmltest/myxml.xml?rand="+Math.round(Math.random()*uint.MAX_VALUE))); loader.addEventListener(Event.COMPLETE,onComplete); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,securityError); loader.addEventListener(IOErrorEvent.IO_ERROR,ioError); function onComplete(event:Event):void { var myxml:XML = XML(event.target.data); var mywidth:uint = parseInt(myxml.mywidth.text(),10); var myheight:uint = parseInt(myxml.myheight.text(),10); var mycolor:uint = parseInt(myxml.mycolor.text(),16); var mytext:String = myxml.mytext.text(); var sprite:Sprite = new Sprite(); sprite.graphics.beginFill(mycolor,1); sprite.graphics.drawRect(0,0,mywidth,myheight); sprite.graphics.endFill(); addChild(sprite); sprite.x = 50; sprite.y = 50; var txtField:TextField = new TextField(); txtField.width = mywidth; txtField.height = myheight; txtField.multiline = true; txtField.wordWrap = true; txtField.htmlText = mytext; sprite.addChild(txtField); } function securityError(event:SecurityErrorEvent):void { trace("SecurityErrorEvent"); } function ioError(event:IOErrorEvent):void { trace("IOErrorEvent"); } Как написал автор, эта часть кода служит для загрузки обновленной версию xml
(Я собираюсь часто обновлять xml файл....добавлять в него новые ссылки на фото)
Код: Выделить всё
loader.load(new URLRequest("http://mega-tv.do.am/xmltest/myxml.xml?rand="+Math.round(Math.random()*uint.MAX_VALUE))); Прошу, помогите мне объединить эти два куска кода на разных версиях AS в один код на AS3.
Вот ссылки на файлы с исходниками
1. Первый код на AS2 http://rghost.ru/40880197
2. Второй код на AS3 http://rghost.ru/40880232