re: pixxel
A Flash Player security leírásban olvasd el legalább a "Website control (policy files)" című fejezetet (33. oldaltól).
re: pixxel
A Flash Player security leírásban olvasd el legalább a "Website control (policy files)" című fejezetet (33. oldaltól).
helló!
egy galériához kellene xml-t behívni, addig rendeben működik is, míg egy helyen van az swf, és az xml. de én úgy szeretném, hogy az swf egy külső linkről hívja meg az xml-t. magyarán az swf és az xml két külön tárhelyen lenne, h miért az hosszú :D
most így néz ki, így szedi az images.xml-t, de nem bírom rávenni, hogy egy tárhelyről is meghívja :(
ImageFader.prototype.loadXML = function(x) { var _xml = new XML (); _xml.ignoreWhite = true; _xml.path = this; _xml.load(x); _xml.onLoad = function() { for (var a = 0; a<this.firstChild.childNodes.length; a++) { var _trans = this.firstChild.childNodes[a].attributes.TRANSITION; var _alt_pause = this.firstChild.childNodes[a].attributes.ALT_PAUSE; var _pause = this.firstChild.attributes.PAUSE; _passed_pause = _pause; if (Math.abs(_alt_pause)>0) { _passed_pause = _alt_pause; } var _img = this.firstChild.childNodes[a].firstChild.nodeValue; this.path._dataProvider.push ({img:_img, transition:_trans, pause:_passed_pause}); } this.path.startFading (); delete this; }; };
előre is kössz!
Most az első tömböt betöltését probálom erősíteni:
frame 2:
stop(); hirek = new XML(); hirek.load("szekek.xml"); hirek.ignoreWhite = true; cim = new Array(); datum = new Array(); szerzo = new Array(); hir = new Array(); hirek.onLoad = function() { this = hirek.firstChild; h = this.childNodes; hirMax = h.length-1; nextFrame(); };
frame 3:
hirCounter = 0; txt_main.html = true; builder = function (i) { txt_main.htmlText = h[i].firstChild.nodeValue; txt_header.text = h[i].attributes.cim; txt_data.text = h[i].attributes.price; txt_hany.text = hirCounter+1+" / "+h.length; kep_loader.loadMovie( h[i].attributes.kep ); scrollOptimizer(); }; trackControl1 = function () { if (hirCounter == hirMax) { this.enabled = 0; } else { this.enabled = 1; } }; trackControl2 = function () { if (hirCounter == 0) { this.enabled = 0; } else { this.enabled = 1; } }; elore_btn.onPress = function() { hirCounter += 1; builder(hirCounter); trackControl1.apply(this); trackControl2.apply(hatra_btn); }; hatra_btn.onPress = function() { hirCounter -= 1; builder(hirCounter); trackControl1.apply(elore_btn); trackControl2.apply(this); }; scrollOptimizer = function () { xpos = scroll_btn._x; ypos = scroll_btn._y=66; msc = txt_main.maxscroll; if (msc<=2) { scroll_btn.enabled = 0; ypos1 = 62; ypos2 = 62; } else { scroll_btn.enabled = 1; ypos1 = 62; ypos2 = 310; } bcscr(); }; function bcscr() { maxa = ypos2-ypos1; scs = (Math.abs(ypos-scroll_btn._y)/maxa)*msc; txt_main.scroll = scs; } function cscr() { this.onEnterFrame = bcscr; } function del() { delete this.onEnterFrame; } builder(hirCounter); trackControl1.apply(elore_btn); trackControl2.apply(hatra_btn);
re: vizoli
nem kitettem főtimelinre this-re állítottam a xml loader. Viszont valamiért az első nem tölti be egyből csa ha továbbléptetem, utána már minden oké, csak ez így zavaró lesz mert úgy néz ki első látásra mintha nem működne..
re: ILLNeo
Es hogyan sikerult, ha nem _lockroot-al?
re: vizoli
Sikerült közbe megoldani, köszi!
Hello vizoli!
sajnos nem segített ez feltétel. Ezeket egyébként itteni segédletekből néztem ki.
Ez kódsor kezeli a menürendszert:
foLeut = _root.keret_mc.menu_mc; alfoLeut = _root.keret_mc.menu2_mc; xmlMenuData = new XML(); xmlMenuData.ignoreWhite = true; xmlMenuData.onLoad = loadXML; xmlMenuData.load("menum.xml"); function loadXML(loaded) { if (loaded) { xmlNode = this.firstChild; foMenuCim = []; foMenuLink = []; alMenuLink = []; alMenuCim = []; foGombok = []; totalMenuk = xmlNode.childNodes.length; for (i=0; i<totalMenuk; i++) { foMenuCim[i] = xmlNode.childNodes[i].attributes.cime; foMenuLink[i] = xmlNode.childNodes[i].attributes.link; gomb = foLeut.attachMovie("menuelem", "menuelem"+i, i); foGombok[i] = gomb; gomb.menucim.htmlText = foMenuCim[i]; gomb.foLink = foMenuLink[i]; gomb.almenuszam = xmlNode.childNodes[i].childNodes.length; gomb.number = i; gomb._y = i*gomb._height; gomb.onRollOver = function() { this.gotoAndPlay("up"); }; gomb.onRollOut = function() { this.gotoAndPlay("down"); }; gomb.onRelease = function() { alfoLeut.createEmptyMovieClip("algombtar",0); gombNumber = this.number; menupont = (gombNumber+1)*gomb._height; alMenu.length = almenuszam; if (this.foLink != undefined) { status.htmlText = "Betöltöm a "+this.foLink+" moviet"; } else { for (i=0; i<this.almenuszam; i++) { alMenuLink[i] = xmlNode.childNodes[this.number].childNodes[i].attributes.link; alMenuCim[i] = xmlNode.childNodes[this.number].childNodes[i].attributes.alcim; algomb = alfoLeut.algombtar.attachMovie("menuelem2", "menuelem2"+i, i); algomb.alLink = alMenuLink[i]; algomb._y = i*algomb._height; algomb.almenucim.htmlText = alMenuCim[i]; algomb.onRollOver = function() { this.gotoAndPlay("up"); }; algomb.onRollOut = function() { this.gotoAndPlay("down"); }; algomb.onRelease = function() { status.htmlText = "Betöltöm a "+this.alLink+" moviet"; _root.content_ldr.loadMovie(this.alLink); }; } } menuIgazit(); }; } } } menuIgazit = function () { alfoLeut._y = menupont; for (i=0; i<=gombNumber; i++) { foGombok[i]._y = i*foGombok[i]._height; } for (j=gombNumber+1; j<totalMenuk; j++) { foGombok[j]._y = j*foGombok[j]._height+alfoLeut._height; } };
Ez pedig a másik swf kezeli az adatokat:
stop(); _lockroot = true; hirCounter = 0; txt_main.html = true; builder = function (i) { txt_main.htmlText = h[i].firstChild.nodeValue; txt_header.text = h[i].attributes.cim; txt_data.text = h[i].attributes.price; txt_hany.text = hirCounter+1+" / "+h.length; kep_loader.loadMovie( h[i].attributes.kep); scrollOptimizer(); }; trackControl1 = function () { if (hirCounter == hirMax) { this.enabled = 0; } else { this.enabled = 1; } }; trackControl2 = function () { if (hirCounter == 0) { this.enabled = 0; } else { this.enabled = 1; } }; elore_btn.onPress = function() { hirCounter += 1; builder(hirCounter); trackControl1.apply(this); trackControl2.apply(hatra_btn); }; hatra_btn.onPress = function() { hirCounter -= 1; builder(hirCounter); trackControl1.apply(elore_btn); trackControl2.apply(this); }; scrollOptimizer = function () { xpos = scroll_btn._x; ypos = scroll_btn._y=66; msc = txt_main.maxscroll; if (msc<=2) { scroll_btn.enabled = 0; ypos1 = 62; ypos2 = 62; } else { scroll_btn.enabled = 1; ypos1 = 62; ypos2 = 310; } bcscr(); }; function bcscr() { maxa = ypos2-ypos1; scs = (Math.abs(ypos-scroll_btn._y)/maxa)*msc; txt_main.scroll = scs; } function cscr() { this.onEnterFrame = bcscr; } function del() { delete this.onEnterFrame; } builder(hirCounter); trackControl1.apply(elore_btn); trackControl2.apply(hatra_btn);
Köszönöm szépen megpróbálom! Ha nem megy konkretizálom! Még 1x köszi!
re: ILLNeo
Kicsit konkretabban is leirhattad volna a dolgot, de valoszinleg az lesz a baj, hogy ha egy swf-et betoltesz akkor az abban levo _root hivatkozas nem a sajat root-jara fog mutatni, hanem a betolto root-jara, ezert rosszak lesznek betoltes utan az eleresi utak.
A betoltott swf-ekre az osszeshez az elso frame legelejere ird ezt:
_lockroot = true;
Ennek hatasara megorzodik betoltes utan is a _root hivatkozas a sajat root-ra.
Sziasztok!
Egy kis segítséget szeretnék kérni tőletek!
Létrehoztam egy kicsit egyszerűbb szerkezetes xml fa struktúrájú menürendszer, ami olyan swf-ket töltene be ami szintén xmlből hívja az adatokat, viszont valamiért azt írja rá hogy „undefined”.
Ha egyenként nyitom meg akkor viszont szépen olvassák az adatokat. Mit ronthatok el?
U.i.: Már probáltam azt is hogy egy swfbe rakom az egészet de ugyanezt kapom vissza. Lehet hogy az XML-t kellene összefüzni?
Ha a tesztelés kérdéses, akkor windows alatt kiválóan használható megoldást a WampServer: http://www.wampserver.com , Apache, PHP, MySQL ... könnyen telepíthető és konfigurálható és akkor nem kell még ingyenes szolgáltató sem, hiszen így lokális webszervered lehet...
A megrendelő programozója a flashvarst- kérte első körben, úgyhogy megpróbálom ezzel, de nagyon sokat segítettetek, köszönöm szépen, most már legalább tudok neki valamit mondani, mivel próbálkozzon, ha úgy gondolja, mégsem jó neki ez a megoldás.
Köszönöm szépen! :)
re: crisscross
világos :)
bár átadhatod a flash-nek azt, hogy melyik xml-t nyissa meg (vagy változóként pl flashvars-al, ahogy említették is már, vagy esetleg egy txt-file-ba teszed az xml nevét a szerveren, amit betöltesz a flash-el, majd az alapján töltöd be az xml-t), de szerintem egyszerűbb, ha egy php-file-t hívsz meg, ami megnyitja és elküldi a flash-nek az xml-t. ilyenkor nem kell foglalkoznod azzal, hogy cache-el a böngésző, viszont magában a php-ban kell megoldanod, hogy melyik xml-t nyissa meg. ezt legegyszerűbben szintén egy a szerveren lévő txt-file megnyitásával tudod megtenni, ami tartalmazza az xml nevét, és amit a főnököd mindig frissíthet.
az meg hogy a megrendelő teszi fel magának az oldalt, ne zavarjon. ha más nem, keress egy ingyenes tárhelyszolgáltatót, ami támogatja a php-t, és csinálj egy account-ot. ott aztán tudsz kedvedre próbálkozni php-vel ;)
arra figyelj, hogy bár az alap php funkciókat támogatják ezek az ingyenes szerverek, van amit már nem. ennek utána tudsz járni az adott szolgáltató oldalán.
Az nem lenne jó megoldás, hogy egy flashvars-ban adjátok át a flashnek a betöltendő XML nevét?
Genin! Azt szeretném, hogy az 1 db swf-em úgy töltsön be XML-t, hogy változót adok át neki attól függően, hogy a 12 db XML közül melyik legyen betöltve.
Van 12 db utazási iroda. Mindegyikhez tartozik 5 db kép, amit be kell töltsön flashbe. Az összes iroda képei be vannak pakolva a pics könyvtárba és az egyes irodák XML-jei megmondják, hogy adott irodához mely képeket töltsük be. De ahhoz, hogy tudjuk melyik irodához mely képek tartoznak, kell egy változó, amely meghatározza, hogy melyik XML-t kell behívni.
Sziasztok!
Itt az as kód, ami tölti a képeket:
stop(); import flash.display.*; myXML = new XML(); myXML.ignoreWhite = true; myXML.load("virtualvisit_"+_root.fajlnev+".xml?"+Math.random()); myXML.onLoad = function(success) { if (success) { for (i=0; i<5; i++) { loadMovie("./pics/"+myXML.firstChild.childNodes[i-1].firstChild.nodeValue, "picholder"+i+"_mc"); } } if (myXML.firstChild.childNodes[5].firstChild.nodeValue == 0) { visitholder_mc._visible = false; virtualbutton_btn._visible = false; visittext_mc._visible = false; } else { loadMovie("./pics/"+myXML.firstChild.childNodes[4].firstChild.nodeValue, "visitholder_mc"); } };
..és az XML:
<?xml version="1.0" encoding="utf-8"?>
<kepek>
<image neve="elso">pic1.jpg</image>
<image neve="masodik">pic2.jpg</image>
<image neve="harmadik">pic3.jpg</image>
<image neve="negyedik">pic4.jpg</image>
<image neve="egyetlen">virtualvisit1.jpg</image>
<label neve="igaz">1</label>
</kepek>
Azóta átírtam a "getURL...." (_root.fajlnev-re), így böngészőben elvileg <param>-ba be lehet írni a változó nevet. Nekem ezt javasolták.
Feltöltöttem mindenestől ide:
http://www.famousszabolcs.hu/virtual.zip
Köszönöm a segítségeteket!
re: crisscross
én speciel nem értem mit is szeretnél pontosan, de ha kifejted jobban, akkor talán tudok segíteni.
am én a timecode/random szám hozzáfűzését a filenévhez nem szeretem. inkább php-val nyitom meg és küldöm el az xml-t, és így nem kell szenvednem a nevekkel :)
re: crisscross
Egy php file-t meghivsz, amiben a megrendelo elkuldi, hogy melyik xml-t kell betoltened..
Az a probléma, hogy nem tudom kipróbálni, mert megrendelő teszi ki az oldalra. Az a lényeg hogy van egy Flash file, ami képeket húz be külső könyvtárból XML segítségével. Ez még nem is lenne gond, de 12 különböző cég aktuális képeit kell behúzni attól függően, hogy melyik cég XML-jét hívjuk. Minden cégnek van egy XML-je, ami megmondja, hogy a könyvtárból mely kép nevek aktuálisak, és azokat betölti az 1 db SWF-be. Erre javasolta a megrendelő, hogy ad nekem egy nevet, ami alapján hívjuk meg az adott XML-t. Azért van így megtekerve, mert ragaszkodik hozzá, hogy ő nem generál futásidőben XML-t. Pedig úgy marha egyszerű lenne. Van valami javaslatod esetleg? Megköszönném!
miert nem probalod ki?
Nem fog mukodni, mert a getURL semmivel nem ter vissza, tehat nem teheted be olyan helyre a kodban, ahova ertek kerul.
Ha jol ertem amit szeretnel, js-bol akarsz flashnek valtozot atadni, erre tobb megoldas is van, AS2be
a random sem az igazi a vegen
?valami=Math.random()*99999 inkabb valami ilyesmi kene
vagy meg jobb ha getTimer()-t hasznalsz
Sziasztok
Egy kis rövid segítségre lenne szükségem! A kérdés az lenne, hogy lehet-e így betölteni XML-t Flashbe?
myXML.load("virtualvisit_"+getURL("javascript: filename()")+".xml?"+Math.random());
A végén a Math.random azért kell, hogy ne cache-elje az XML-t.
Ha rossz a szintaktika, mit kell javítanom benne?
Köszi előre is!
A beküldéshez be kell jelentkezni.