Autor | Zpráva | ||
---|---|---|---|
RobertH Profil |
#1 · Zasláno: 6. 6. 2011, 14:23:21
Zdravim,
pokoušim se o dynamický flashový banner s pomocí XML, data se mi načítaj, ale můj problém tkví v tom, že se mi animace zastaví na 1 framu a neproběhne mi celá jak bych potřeboval. ActionScript: //Create the XML Object myXML = new XML() myXML.ignoreWhite = true //Load XML file myXML.load("akce.xml") //Make a reference to current timeline myXML.ref = this // Parse XML and fetch myXML.onLoad = function(succes){ if(succes){ var root = this.firstChild nodes = root.childNodes for(var i=0; i<nodes.length; i++) { this.ref["Title_txt"+i].text = nodes[i].attributes.name subnodes = nodes[i].childNodes this.ref["Comments_txt"+i].text = subnodes[0].firstChild.toString() this.ref["holder_mc"+i].loadMovie(subnodes[1].firstChild.toString()) } } else trace("Error loading XML document") } stop() A XML: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE banner SYSTEM "http://1.im.cz/dtd/dynamicbanner.dtd"> <banner> <title name="-55%"> <comments>1</comments> <image>1.jpg</image> </title> <title name="Test 2"> <comments>2</comments> <image>2.jpg</image> </title> <title name="Test 2"> <comments>3</comments> <image>3.jpg</image> </title> </banner> AS moc nerozumim, tak uvítám každou radu. Děkuji předem. |
||
:D Profil * |
#2 · Zasláno: 6. 6. 2011, 16:44:48
myXML.onLoad = function(succes){ if(succes){ // uspesne nacteni XML dokumentu // staci doplnit o play(); nebo goToAndPlay(2); } else { trace("Error loading XML document"); } } stop(); |
||
:D Profil * |
#3 · Zasláno: 6. 6. 2011, 16:46:07
Oprava: gotoAndPlay(2) a ne goToAndPlay(2);
|
||
weroro Profil |
#4 · Zasláno: 6. 6. 2011, 23:26:12
this.stop (); myXML = new XML (); myXML.ignoreWhite = true; myXML.ref = this; myXML.onLoad = function (succes) { if (succes) { var root:Object = this.firstChild; var nodes:Array = root.childNodes; for (var i = 0; i < nodes.length; i++) { this.ref["Title_txt" + i].text = nodes[i].attributes.name; var subnodes:Array = nodes[i].childNodes; this.ref["Comments_txt" + i].text = subnodes[0].firstChild.toString (); this.ref["holder_mc" + i].loadMovie (subnodes[1].firstChild.toString ()); } _root.play (); } else { trace ("Error loading XML document"); } }; myXML.load ("akce.xml"); Ešte mám ale dve poznámky: 1.) Nezabudni na koniec animácie (úplne posledný frame) pridať script _root.gotoAndPlay(2); pretože v opačnom prípade sa ti bude stále dookola loadovať to isté xml a môže to zblbnúť. 2.) Pokiaľ máš v pláne takto vytvorený banner použiť, musíš si uvedomiť jednu dôležitú vec. FLASH nedokáže (z dôvodu zabezpečenia) načítavať xml súbor z inej domény (pokiaľ mu to nedovolíš). Spomenul som to pre to, lebo ak by si chcel svoj banner umiestniť napr. na môj web a budeš chcieť meniť informácie v ňom, tak xml súbor musí byť na mojom servery s polu s bannerom, čo však pôsobí komplikácie pri aktualizácii dát. Osobne mi nemusí vyhovovať alebo nebudem mať čas stále vymieňať tvoje xml za nejaké nové, aktualizované. Preto to chceš asi urobiť tak, že banner bude na mojom servery a xml na tvojom servery, to ti však fungovať nebude. Buď bude potrebné povoliť domain policy alebo si vytvoriť malý php súbor, ktorý bude pribalený spolu s bannerom na mojom servery. flash zavolá PHP, php načíta dáta (xml) z inej (tvojej) domény a vypíše ich do flashu. |
||
RobertH Profil |
#5 · Zasláno: 7. 6. 2011, 13:30:19
weroro:
Super, díky moc, takhe to funguje bez problému. Ale docela si mě zarazil s tim, že mi to nenačte xml z mýho serveru, když bude banner na jinym. Tušim co tim PHP myslíš, ale vůbec nevim jak to zapsat. Myslíš, že by si mi moh hodit ňákou ukázku? A ještě přemejšlim, jestli bude takto banner akceptovat třeba Seznam.cz? Máš s tim zkušenost? Abych se netrápil s něčim co pak nepude použít. |
||
weroro Profil |
#6 · Zasláno: 7. 6. 2011, 14:53:42 · Upravil/a: weroro
this.stop (); var adresa_k_xml:String = "http://www.tvojastranka.cz/akce.xml"; var myXML:XML = new XML (); myXML.ignoreWhite = true; myXML.ref = this; myXML.onLoad = function (succes) { if (succes) { var root:Object = this.firstChild; var nodes:Array = root.childNodes; for (var i = 0; i < nodes.length; i++) { this.ref["Title_txt" + i].text = nodes[i].attributes.name; var subnodes:Array = nodes[i].childNodes; this.ref["Comments_txt" + i].text = subnodes[0].firstChild.toString (); this.ref["holder_mc" + i].loadMovie (subnodes[1].firstChild.toString ()); } _root.play (); } else { trace ("Error loading XML document"); } }; myXML.load ("load_xml.php?xmlpath=" + adresa_k_xml); PHP súbor s názvom load_xml.php, bude vyzerať takto: <?php $xml = $_GET['xmlpath']; readfile($xml); ?> SWF súbor a PHP súbor musia byť v rovnakom priečinku. SWF banner zavolá PHP súbor s parametrom, ktorým zadá PHP scriptu aby načítal xml súbor zo zadanej adresy. Tak to môžeš mať XML umiestnený kdekoľvek :) |
||
RobertH Profil |
#7 · Zasláno: 8. 6. 2011, 12:18:35
Díky, ale bohužel mi to tak nefunguje...
Zřídil jsme si dva hostingy na webzdarma. Na jeden jsem dal SWF + PHP a na druhý XML s obrázky, místo "http://www.tvojastranka.cz/akce.xml" v AS jsem reálnou adresu k XML a bohužel nic. |
||
weroro Profil |
#8 · Zasláno: 8. 6. 2011, 16:21:55
Teoreticky moze byt chyba v PHP skus to takto:
<?php $xml = $_GET['xmlpath']; $obsah = file_get_contents ($xml); echo $obsah; ?> |
||
RobertH Profil |
#9 · Zasláno: 10. 6. 2011, 15:41:39
Tak bohužel ani takhle to nefunguje.
|
||
:D Profil * |
#10 · Zasláno: 11. 6. 2011, 07:20:40
A jsou cesty k externím datům (obrázky a pod.) v XML napsány absolutně, nebo načítáte pouze jenom řetězce (text)?
|
||
RobertH Profil |
#11 · Zasláno: 13. 6. 2011, 12:01:27
Měl jsem je napsané pouze jako text, ale i když sem je přepsal na absolutní, tak pořád nic.
Dávám sem odkaz na celou složku, kdyby se chtělo někomu na to mrknout, jelikož já sem už bezradnej. |
||
Časová prodleva: 9 dní
|
|||
RobertH Profil |
#12 · Zasláno: 22. 6. 2011, 14:21:41 · Upravil/a: RobertH
Zkoušim testovat různý návaznosti na sebe atd. viz níže:
1) PHP Když zadám adresu http://mojedomena.cz/load_xml.php?xmlpath=http://mojedomena.cz/xml/akce.xml tak se XML načte (takže PHP funguje). 2) FLASH Když testuju flash přímo ve flashi (Test scene), tak v output okně mi to vypíše, že nemůže najít URL (file://...) cože je jasný, když se to spouští z localu, ale aspoň je vidět, že funguje i AS. Pokud zadám místo myXML.load ("load_xml.php?xmlpath=" + adresa_k_xml); myXML.load ("http://mojedomena.cz/xml/akce.xml); Vážně už nevim čím by to mohlo bejt, zkoušim všechno možný, ale nevim si s tim rady. Uměl by mi někdo poradit? |
||
Časová prodleva: 9 dní
|
|||
RobertH Profil |
#13 · Zasláno: 1. 7. 2011, 13:17:08
Tak záhada vyřešena, vykašlal jsem se na celý PHP skript a udělal jsem to přes crossdomain.xml a vše funguje jak má.
|
||
Časová prodleva: 13 let
|
0