PDA

Volledige versie bekijken : Laden externe SWF > XML probleem


BaSZie82
%Europe/Berlin %472 %2010, 12:20
Hallo,

na lang zoeken stel ik dan toch maar hier de vraag. Kort gezegd: ik een swf-file welke dient als menupagina. Hierop staan een 50-tal knoppen. Iedere knop refereert naar een swf met een bladerbare PDF. De 'blader-pdf-swf' wordt door een programma gegenereerd en kan ik dus niet bewerken. Iedere blader-pdf-swf roept daarbij een eigen XML file aan.

Het laden van een blader-pdf-swf 'over' de menupagina, en het unloaden gaan bij de eerste swf goed. Echter, na het openen en sluiten van de eerste blader-pdf-swf, wordt bij de tweede en volgende het XML bestand van de eerste blader-pdf-swf gebruikt. En dat terwijl (gechecked via de debugger) de juiste blader-pdf-swf wordt aangeroepen.

Enig idee hoe ik (in as3) Flash de XML-file kan laten vergeten? Het gebruik van unload, etc heeft helaas geen effect.

Dauntless
%Europe/Berlin %508 %2010, 13:12
Voeg een random string toe aan de url van het xml bestand.

Bv, in plaats van
"myFile.xml"
wordt het
"myFile.xml?q="+getTimer();

BaSZie82
%Europe/Berlin %510 %2010, 13:15
Dank voor je reactie. Dit kan helaas niet, aangezien de XML vanuit de blader-pdf-swf wordt aangeroepen. En daar kan ik niet aankomen...

Dauntless
%Europe/Berlin %514 %2010, 13:20
Het kan toch niet dat al je blader-pdf-swf's hetzelfde xml bestand inladen? Ik neem aan dat je voor elke swf toch een aparte xml hebt? (Iets meer info graag :))

BaSZie82
%Europe/Berlin %521 %2010, 13:30
Klopt... iedere blader-pdf-swf heeft een eigen XML-bestand. Maar ondanks dat wel de goede SWF wordt geopend, worden (blijkbaar) alle variabelen van de eerste geladen swf gebruikt.

Wanneer ik lokaal test krijg ik (vanwege de random string) telkens dezelfde URL-error (lees er wordt telkens hetzelfde bestand aangeroepen).

Dauntless
%Europe/Berlin %527 %2010, 13:40
Die random string werkt enkel online, niet lokaal.

Zie je adhv een package sniffer dat het juiste xml bestand wordt aangeroepen ?

BaSZie82
%Europe/Berlin %534 %2010, 13:49
Misschien was ik niet duidelijk in mijn reactie... ik weet dat die string niet lokaal werkt, maar door deze toch te testen krijg ik een URL-error waaraan ik kan zien dat het verkeerd bestand wordt aangeroepen.

Overigens gaat dit alles op cd-rom geplaatst worden en gaat alles dus via een player.

Het lijkt er zelfs op of weliswaar de juiste swf wordt aangeroepen, maar dat toch gewerkt wordt met de eerst geladen swf. De titel zit bijvoorbeeld niet in een XML bestand, maar in de file zelf en deze blijft bij iedere swf gelijk.

Kan het zijn dat de eerst geladen swf misschien niet daadwerkelijk verwijderd wordt?Zie hier mijn stukje script...


var swf:MovieClip;
var loader:Loader = new Loader();

addChild(loader);


// Klik op link naar swf
function btnClick(event:MouseEvent):void {

// strip nummer (dit nummer is gelijk aan de naam van de swf, vb: 1.swf)
var newSWFRequest:URLRequest = new URLRequest(event.target.name.substr(3,2) + ".swf");
loader.load(newSWFRequest);
addChild(loader);

// plaats button bovenop om swf te kunnen sluiten
var btnExit = new Exit();
addChild(btnExit);

//
function killPDF(event:MouseEvent):void {
loader.unload();
removeChild(btnExit);
removeChild(loader);
}

btnExit.addEventListener(MouseEvent.CLICK, killPDF);


}
// Btn listeners
pdf1.addEventListener(MouseEvent.CLICK, btnClick);
pdf2.addEventListener(MouseEvent.CLICK, btnClick);
pdf3.addEventListener(MouseEvent.CLICK, btnClick);
pdf4.addEventListener(MouseEvent.CLICK, btnClick);
pdf5.addEventListener(MouseEvent.CLICK, btnClick);
// en nog 50 stuks...

Dauntless
%Europe/Berlin %571 %2010, 14:43
Probeer dit eens:

var swf:MovieClip;
var loader:Loader;


// Klik op link naar swf
function btnClick(event:MouseEvent):void {

// strip nummer (dit nummer is gelijk aan de naam van de swf, vb: 1.swf)
var newSWFRequest:URLRequest = new URLRequest(event.target.name.substr(3,2) + ".swf");
loader = new Loader();

loader.load(newSWFRequest);
addChild(loader);



addChild(btnExit);
}
// Btn listeners
pdf1.addEventListener(MouseEvent.CLICK, btnClick);


// plaats button bovenop om swf te kunnen sluiten
var btnExit = new Exit();



function killPDF(event:MouseEvent):void {
loader.unload();
removeChild(btnExit);
removeChild(loader);
}

btnExit.addEventListener(MouseEvent.CLICK, killPDF);

BaSZie82
%Europe/Berlin %579 %2010, 14:54
Helaas geen resultaat... probleem blijft.

Of heb je wellicht een suggestie om op een andere manier die swf's te openen? Of zou het mogelijk zijn mijn menu-swf te resetten na het sluiten van een pdf-swf.

BaSZie82
%Europe/Berlin %749 %2010, 18:59
Nou, helaas krijg ik het niet opgelost. Niet op de manier zoals ik hier heb beschreven, niet door de swf's in verschillende levels te laden, niet met as2 en as3. Daarom maar van alle bladerbare PDF's een EXE gemaakt en om deze via fscommand een voor een te kunnen openen.

Toch ontzettend bedankt voor het meedenken!