downstream
%Europe/Berlin %446 %2009, 11:43
Hallo allemaal,
Ik moet echt proberen wat vaker het forum te openen, hoop interessante topics waar ik wellicht ook een bijdrage kan leveren. :D
Ik zit met het volgende probleem:
Voor een project heb ik een interface gemaakt die voor de navigatie gebruik maakt van dynamisch geladen movieclips en besturing dmv de muis. Als er genavigeerd wordt is het de bedoeling dat de eerst geselecteerde movieclip naar een "selected" status springt en dat de vorige naar een "idle" status springt. Daarnaast wordt er een textfield gemanipuleerd om de bijgeleverd beschrijving van de movieclip te veranderen. (zie bijlage)
De blokken zijn allemaal unieke classes en moeten dynamisch aan te spreken zijn. Daarom heb ik ze na het aanmaken in een array geplaatst.
iconArray.push(iconNaam_mc);
Daarna wordt van de volgende methode gebruik gemaakt om de movieclip van status te laten veranderen:
private function selectIcon(i:uint){
var appName:String = appList.appName[i].text();//inhoud textfield
currID = i; //de id wordt opgeslagen, zodat deze later gebruikt kan worden
currIcon = iconArray[currID];//hetzelfde geldt voor de movieclip
currIcon.gotoAndStop("selected");//verander status
setAppName(appName);//verander beschrijving
}
De eerste keer dat deze functie aangeroepen wordt is nadat alle movieclips geladen zijn. Dit werkt perfect. Om te testen heb ik voor "i" uiteraard verschillende waardes genomen, zonder problemen.
De navigatie doet het volgende:
public function moveIcon(cursorDir:String){ //de variable cursorDir wordt toegespeeld vanuit de DocumentClass
switch(cursorDir){
case "right":
//als de huidige id kleiner is dan het maximaal aantal iconen...
if(currID < _DOCKAMOUNT-1){
trace("move right");
selectIcon(currID+1); //selecteer een icon verderop...
unsetIcon(currID); //en zorg ervoor dat de huidige teruggaat naar de oude staat.
} else {
trace("unable to move right"); //en als het huidige id groter is, doet ie niets...
}
break;
}
}
Het probleem ontstaat als er genavigeerd gaat worden. De selectIcon-functie manipuleert dan alleen de textfield, maar de movieclip blijft ongeroerd, terwijl verschillende traces hebben aangetoond dat de movieclip geselecteerd wordt en zelfs het juiste frame zou weergeven. Helaas is dit dus niet het geval. Het vreemde is dat de functie bij de eerste keer aanroepen wel functioneert, maar daarna nog maar half, terwijl alle traces heel aardig zeggen dat alles werkt.
Ik heb meerdere fora afgezocht naar een oplossing, maar tot dusverre zonder succes. Ik heb van alles geprobeerd met code, maar ook dit was vruchteloos. Voor de duidelijkheid: de movieclips zijn allemaal correct gelabeld en hebben allemaal een stop in de juiste keyframes. De gegeven codevoorbeelden bevinden zich allemaal in 1 class.
Zie jij wat ik niet zie? Wat zie ik over het hoofd? Argh! :X
Alvast bedankt voor je reactie!
Grt,
Do 8D
Edit: Lezen van code kan lastig zijn... het heeft natuurlijk weinig zin als je met de ene methode een variable aanpast die je daarna voor een andere methode gebruikt.
selectIcon(currID+1); //selecteer een icon verderop...
unsetIcon(currID); //en zorg ervoor dat de huidige teruggaat naar de oude staat.
Dit moest natuurlijk precies andersom zijn...
Slotje?
Ik moet echt proberen wat vaker het forum te openen, hoop interessante topics waar ik wellicht ook een bijdrage kan leveren. :D
Ik zit met het volgende probleem:
Voor een project heb ik een interface gemaakt die voor de navigatie gebruik maakt van dynamisch geladen movieclips en besturing dmv de muis. Als er genavigeerd wordt is het de bedoeling dat de eerst geselecteerde movieclip naar een "selected" status springt en dat de vorige naar een "idle" status springt. Daarnaast wordt er een textfield gemanipuleerd om de bijgeleverd beschrijving van de movieclip te veranderen. (zie bijlage)
De blokken zijn allemaal unieke classes en moeten dynamisch aan te spreken zijn. Daarom heb ik ze na het aanmaken in een array geplaatst.
iconArray.push(iconNaam_mc);
Daarna wordt van de volgende methode gebruik gemaakt om de movieclip van status te laten veranderen:
private function selectIcon(i:uint){
var appName:String = appList.appName[i].text();//inhoud textfield
currID = i; //de id wordt opgeslagen, zodat deze later gebruikt kan worden
currIcon = iconArray[currID];//hetzelfde geldt voor de movieclip
currIcon.gotoAndStop("selected");//verander status
setAppName(appName);//verander beschrijving
}
De eerste keer dat deze functie aangeroepen wordt is nadat alle movieclips geladen zijn. Dit werkt perfect. Om te testen heb ik voor "i" uiteraard verschillende waardes genomen, zonder problemen.
De navigatie doet het volgende:
public function moveIcon(cursorDir:String){ //de variable cursorDir wordt toegespeeld vanuit de DocumentClass
switch(cursorDir){
case "right":
//als de huidige id kleiner is dan het maximaal aantal iconen...
if(currID < _DOCKAMOUNT-1){
trace("move right");
selectIcon(currID+1); //selecteer een icon verderop...
unsetIcon(currID); //en zorg ervoor dat de huidige teruggaat naar de oude staat.
} else {
trace("unable to move right"); //en als het huidige id groter is, doet ie niets...
}
break;
}
}
Het probleem ontstaat als er genavigeerd gaat worden. De selectIcon-functie manipuleert dan alleen de textfield, maar de movieclip blijft ongeroerd, terwijl verschillende traces hebben aangetoond dat de movieclip geselecteerd wordt en zelfs het juiste frame zou weergeven. Helaas is dit dus niet het geval. Het vreemde is dat de functie bij de eerste keer aanroepen wel functioneert, maar daarna nog maar half, terwijl alle traces heel aardig zeggen dat alles werkt.
Ik heb meerdere fora afgezocht naar een oplossing, maar tot dusverre zonder succes. Ik heb van alles geprobeerd met code, maar ook dit was vruchteloos. Voor de duidelijkheid: de movieclips zijn allemaal correct gelabeld en hebben allemaal een stop in de juiste keyframes. De gegeven codevoorbeelden bevinden zich allemaal in 1 class.
Zie jij wat ik niet zie? Wat zie ik over het hoofd? Argh! :X
Alvast bedankt voor je reactie!
Grt,
Do 8D
Edit: Lezen van code kan lastig zijn... het heeft natuurlijk weinig zin als je met de ene methode een variable aanpast die je daarna voor een andere methode gebruikt.
selectIcon(currID+1); //selecteer een icon verderop...
unsetIcon(currID); //en zorg ervoor dat de huidige teruggaat naar de oude staat.
Dit moest natuurlijk precies andersom zijn...
Slotje?