Choroba przechodzi powoli i wraca chec do dlubania w kodzie. Walka z Adobe Flex cd.
Flex zachowuje sie dosyc ciekawie. Jesli zbudowac taka konstrukcje:
<mx:XML id=”inputXML” source=”news.xml”/>
<mx:XMLListCollection id=”newsXML” source=”{inputXML.news}”/>
to (jak sie okazuje w praktyce) bez wzgledu na zmiane pliku XML wszystkie dane beda zebrane podczas kompilacji i osadzone na stale w pliku swf. Nie ucieszylo mnie to szczegolnie. Jednym slowem trzeba to obejsc. I juz wiem jak. Ale dzisiaj o czyms innym.
Komponent mx:Repeater pobiera z pliku XML kolejne wpisy tak jak w przykladzie:
<news> <date>18.12.2007 11:41</date> <title>Contact Centre Report</title> <lead>Week 45 - summary</lead> <content>http://127.0.0.1/site/home/news/view/item382669/</content> </news>
Oczywiscie, pojedynczy wpis mozna wydobyc na kilka sposobow - mozna parametrem przekazac index wpisu na liscie
(XMLListCollection), lub przekazac caly wpis i analizowac go osobno po kliknieciu w jakis przycisk (Oczywiscie wlaczony do konstrukcji
komponentu mx:Repeater).
Wywolanie funkcji wyglada nastepujaco:
click=”expand_news(String(event.currentTarget.getRepeaterItem()))”
Poniewaz zrodlem do budowy komponentu (dataProvider) jest lista XML, wiec funkcja String wydobedzie pojedynczy wpis XML dotyczacy biezacego (wybranego) elementu.
Efektem klikniecia jest przekazanie wpisu jako ciagu znakow (tak jak oryginal z pliku XML) do wykorzystania ‘na zewnatrz’.
Sama funkcja sklada sie z 2 czesci: czytam wpis XML oraz go konwertuje:
private function expand_news(e:String):void
{
var newsTo:XMLDocument = new XMLDocument(e); /* odbieram String jako XMLDocument */
var decoder:SimpleXMLDecoder = new SimpleXMLDecoder(true); /* buduje dekoder XML */
var resultX:Object = decoder.decodeXML(newsTo); /* buduje obiekt w oparciu o zdekodowany XML */ my_editor.title=resultX.news.title + ‘ (posted on: ‘ + resultX.news.date + ‘)’; my_editor.htmlText=resultX.news.content; /* dostep do pol XML */ }
Oczywiscie na poczatku skryptu trzeba zaimportowac klase dekodera do kompilacji:
import mx.rpc.xml.SimpleXMLDecoder;
Kod mxml mozna znalezc >>> tu <<<; zawiera on rowniez obsluge dynamicznego rozwijania komponentu (resize).
I zapraszam ja zwykle do mojego malego miasta!!!
PS. Jak mnie wkurza, jak ten edytor w WordPressie rozwala pieknie sformatowany kod… Grrrrrr.
0 Odpowiedzi do “Zabawa z kodowaniem galerii cd.”
Napisz odpowiedź