PDA

Volledige versie bekijken : Submenu probleem met geturl _blank??


123GoToAndPlay
%Europe/Berlin %414 %2008, 10:56
Hallo,

Ik zit met het volgende probleem. In flash heb ik een simpel menu gemaakt met ook een submenu. Omdat ik

getURL(link, "_self");


wordt mijn flash menu steeds herladen en is een gekozen submenu niet meer geselecteerd??

Ik wil dat het flashmenu niet telkens opnieuw wordt ingeladen en dat onthouden wordt wanneer een submenu bestaat.

Hoe kan ik dit oplossen?

Dauntless
%Europe/Berlin %454 %2008, 11:54
Meerdere mogelijkheden:

- Voordat je de url oproept sla je in een Shared Object (zie helpfiles) op welk submenu je wil openen. Bij het opstarten van je swf kijk je of er iets in het SO zit en zoja, toon je het juiste sub menu en verwijder je het SO. Zonee, toon je het standaard menu

- Je geeft aan je link een GET variabele mee (bv index.php?sub=2). Je index.php print deze variabele dan naar je SWF door middel van FlashVars. Wederom kijk je dan aan het begin van je movie of die waarde bestaat; zoja -> openen; zonee -> standaard

123GoToAndPlay
%Europe/Berlin %619 %2008, 15:52
@dauntless, tx

ik probeer de Shared Object maar ik krijg het niet voor elkaar.


//shared object for submenu
var submenu_so:SharedObject;
submenu_so = SharedObject.getLocal("menu");

...........
............

function goto() {
submenuID = this.submenuID;
submenuName = this.submenuName;
name = this.name;
trace("URL: "+this.gotoURL);
trace("-----------------");
if(submenuName == "submenu") {
//opslaan in shared object
submenu_so.data.submenuID = submenuID;
submenu_so.data.submenuName = submenuName;
submenu_so.data.name = name;
submenu_so.flush();
generateMenu(menu_mc, 5, beginY, "submenu_mc", 1000, menuArray[submenuID]);
} else {
trace("Close it: "+name);
closeSubmenus(name);
}
//getURL(this.gotoURL, "_self");
}
//hier als we het submenu sluiten dan maken we Shared Object leeg
function closeSubmenus(thisName) {
switch (thisName) {
case "D" :
_root.menu_mc.submenu_mc.removeMovieClip();
submenu_so.clear();
break;
case "E" :
_root.menu_mc.submenu_mc.removeMovieClip();
submenu_so.clear();
break;
case "G" :
_root.menu_mc.submenu_mc.removeMovieClip();
submenu_so.clear();
break;
}
}


Als ik het .html bestand test dan wordt het submenu niet onthouden als ik de pagina ververs?

enig idee

123GoToAndPlay
%Europe/Berlin %704 %2008, 17:54
hmm, dit doet al heel wat


function showSubmenu() {
if (submenu_so.data.submenuID) {
trace("SO object: "+submenu_so.data.submenuID);
submenuID = submenu_so.data.submenuID;
submenuName = submenu_so.data.submenuName;
name = submenu_so.data.name;
generateMenu(menu_mc, 5, menu_mc._height+150, "submenu_mc", 1000, menuArray[submenuID]);
}
}

en bij
function loadMenu(succes) {
if (succes) {
showSubmenu();
}


Alleen werkt het niet bij het eerste submenu :(

123GoToAndPlay
%Europe/Berlin %873 %2008, 21:57
kan iemand hier naar kijken (zie bijlage)

Mijn eerste submenu blijft niet staan, er gaat iets mis met menuArray[0] icm shared_object.

grtz

Dauntless
%Europe/Berlin %895 %2008, 22:29
Je zal de xml dan ook even online moeten zetten.

Overigens ziet de structuur van de verwerkte xml er vrij vreemd uit; Je gebruikt een array als associatieve array en gewone array door elkaar (wat wel voor problemen kan zorgen)

123GoToAndPlay
%Europe/Berlin %294 %2008, 08:03
Hier is mijn .xml file


<?xml version="1.0" encoding="iso-8859-1"?>
<menu name="mainmenu">
<submenu name="submenu A" gotoURL="/a">
<item name="A 1" gotoURL="/a1"/>
<item name="A 2" gotoURL="/a2"/>
<item name="A 3" gotoURL="/a3"/>
</submenu>
<submenu name="submenu B" gotoURL="/b">
<item name="B 1" gotoURL="/b1"/>
<item name="B 2" gotoURL="/b2"/>
</submenu>
<item name="D" gotoURL="/d"/>
<item name="E" gotoURL="/e"/>
<submenu name="submenu F" gotoURL="/f">
<item name="F 1" gotoURL="/f1"/>
<item name="F 2" gotoURL="/f2"/>
<item name="F 3" gotoURL="/f3"/>
</submenu>
<item name="G" gotoURL="/g"/>
</menu>


Was me er niet van bewust dat ik een associatieve array en een gewone array door elkaar gebruikte. Dacht dat ik alleen een een assoc. array gebruikte.

Dauntless
%Europe/Berlin %345 %2008, 09:18
if (submenu_so.data.submenuID) {
Dat kijkt na of de boolean subMenuID true is. Aangezien subMenuID een number is zal flash die voor je omzetten naar een boolean. Hoe gebeurt dat? Alle getallen worden 'true', buiten 0, die is false. Je moet hier dus eerder iets doen als:
if (submenu_so.data.submenuID != undefined) {
Of iets dergelijks.

123GoToAndPlay
%Europe/Berlin %369 %2008, 09:51
Wow dauntless tx,

Dat is het idd.


if (submenu_so.data.submenuID != undefined) {


ik wist niet dat submenu_so.data.submenuID nu als een boolean werd gelezen en 0 false werd. (wat eigenlijk logisch is als 1 true is)