Volledige versie bekijken : dynamische xml menu
davyvh
%Europe/Berlin %670 %2005, 17:05
Voor mijn nieuwe website ben ik een xml menu aan het bouwen voor de portfolio.
Ik zit met een aantal probleempjes zoals je hier (http://www.davyvh.be/flashfocus/portfolio_03.swf) kan zien.
De bedoeling is dat aan de hand van een xml bestand (http://www.davyvh.be/flashfocus/portfolio.xml) de menu wordt opbegouwd. Je klikt op een item, en die klapt dan open (indien een ander item is geöpend, moet dat sluiten) en de onderstaande items schuiven naar onder.
In volgende regels zitten fouten, maar ik weet alleen niet wat de fouten zijn:
- this._parent["listItem"+y].gotoAndStop(1);
- this._parent["listItem"+i]._y = ((i-1) * spacing) + (this._parent["listItem"+this.ind]._y + 81);
hier de fla: http://www.davyvh.be/flashfocus/portfolio_03.fla
this["listItem"+y].ind = y;
this["listItem"+y].onRelease = function(){
this._parent["listItem"+y].gotoAndStop(1);
trace(this._parent["listItem"+y]);
for(var i = (this.ind+1), l = idArray.length; i<l; i++){
//this._parent["listItem"+(i+1)].tween("_y", this._parent["listItem"+this.ind]._y + (i * this._height), 3, "easoutExpo");
this._parent["listItem"+i]._y = ((i-1) * spacing) + (this._parent["listItem"+this.ind]._y + 81);
trace(this._parent["listItem"+i]._y)
}
this.gotoAndPlay(2);
}
Ik heb echt veel geprobeerd, maar er lukt niets...
Alvast erg bedankt,
Groeten,
Davy
davyvh
%Europe/Berlin %818 %2005, 20:38
Echt niemand?
TrueChaoZ
%Europe/Berlin %947 %2005, 23:44
dit: this._parent["listItem"+y].gotoAndStop(1);
is bijna hetzelfde in je onRelease als
dit: this.gotoAndStop(1);
alleen doordat je daar de y gebruikt pakt hij altijd de laatste y die er is (aangezien een onRelease realtime wordt verwerkt), de laatste lijkt me hier beter
davyvh
%Europe/Berlin %495 %2005, 12:53
dit: this._parent["listItem"+y].gotoAndStop(1);
is bijna hetzelfde in je onRelease als
dit: this.gotoAndStop(1);
alleen doordat je daar de y gebruikt pakt hij altijd de laatste y die er is (aangezien een onRelease realtime wordt verwerkt), de laatste lijkt me hier beter
Hoe kan ik dan alle items gotoAndStop(1); laten doen?
En de formule klopt ook helemaal niet. Ik zal even uitleggen hoe ik dacht dat het zou werken:
this._parent["listItem"+i]._y = ((i-1) * spacing) + (this._parent["listItem"+this.ind]._y + 81);
alle items hoger dan het geklikte item = (i-1)*hoogte niet-uitgeklapt item + (geklikte item + hoogte uitgeklapt item)
Alvast bedankt,
Davy
davyvh
%Europe/Berlin %808 %2005, 20:24
Deze vraag kan toch echt niet te moeilijk zijn?
theFlashWizard
%Europe/Berlin %819 %2005, 20:40
ga is wat tracen.. op die manier kan je ontdekken of hij elke mc kan vinden zoals je ze daar aanspreekt en meer..
davyvh
%Europe/Berlin %823 %2005, 20:45
ga is wat tracen.. op die manier kan je ontdekken of hij elke mc kan vinden zoals je ze daar aanspreekt en meer..
Ik heb echt veel geprobeerd, maar er lukt niets...
Met "echt veel" bedoel ik echt wel: echt veel.
Tracen zit daar dus ook bij.
F1 en de zoekfunctie opt forum gebruiken zit daar ook bij.
Toch bedankt,
Davy
theFlashWizard
%Europe/Berlin %827 %2005, 20:51
en hij vond alle mc's zoals jij ze daar aanspreekt?
hij vond alle breedtes en hoogtes zoals jij ze nodig hebt?
zet de berekening deel voor deel in een trace en kijk bij welk deel het fout gaat..
want met trace kom je bijna overal uit..
owja.. en leg me nou is nog 1x kort maar krachtig uit wat hij niet doet? wat jij wel wilt dat er gebeurt..
davyvh
%Europe/Berlin %839 %2005, 21:08
Als je kijkt naar m'n fla zie je dat dit:
trace(this._parent["listItem"+y]);
Undefined uitkomt...
Ik zoek dus een formule om ALLE items gotoAndStop(1); te laten doen.
Verder klopt de regel:
this._parent["listItem"+i]._y = ((i-1) * spacing) + (this._parent["listItem"+this.ind]._y + 81);
niet.
En na ook daar een hele tijd te tracen, heb ik ook daar niets gevonden...
Trouwens, tracen lost lang niet ALLES op hoor...
Het probleem in het kort:
De afstanden bij het uitklappen van de items kloppen totaal niet.
In het begin zijn ze te kort, op het einde te groot.
theFlashWizard
%Europe/Berlin %850 %2005, 21:24
alle? wat dacht je van een for loop:
Loops:
http://www.actionscripts.org/tutorials/intermediate/loops/index.shtml
http://www.actionscripts.org/tutorials/intermediate/Nested_loops/index.shtml
en waarom die +81 ?
ik zeg niet alles.. maar wel bijna alles..
naar mijn mening kun je er altijd mee vinden waar het fout gaat.. de oplossing moet je dan alleen nog zelf bedenken..
Tommyfied
%Europe/Berlin %851 %2005, 21:25
Sorry dat ik het zeg maar dit is écht heel erg wazige code ... ik denk niet dat iemand hier zo iets mee kan zonder eerst alles na te lopen en uit te spitten.
Wat betreft je vragen/problemen:
1. Alle items moeten binnen de onRelease layer gotoAndStop(1) doen.
Dit kan door een nieuwe loop te maken binnen die handler. Deze moet dan door al die items lopen en dan doe je zoiets als this._parent["listItem" + i].gotoAndStop(1);
2. De afstanden kloppen niet tussen de verschillende submenu's.
Je wilt dus dat binnen de onRelease handler een stukje code komt dat zegt dat alle sub menu's een bepaalde y-waarde krijgen afhankelijk van hun nummer, een variabele spacing en een startwaarde van 81. (Denk ik).
Dan zou ik de loop van hiervoor gebruiken en daarin dan iets doen als this._parent["listItem" + i]._y = 81 + (i * spacing);
Succes ermee en kijk nog eens een keer GOED naar het verschil/betekenis/werking/voor-en nadelen van this / _parent / _root.
theFlashWizard
%Europe/Berlin %864 %2005, 21:44
ff over 1. die this._parent["listItem" + i].gotoAndStop(1); moet dan wel binnen een for loop he.. Kweet dat jij dat weet.. maar of davyvh dat doorhad..
hmm ik zou iets maken als:
boven een for loop:
H = this._parent["listItem" + this.ind]._height //vragen we 1x op om het minder zwaar te maken, en overzichtelijker
spacing = 5 //als tussenruimte
begin = 81 //begin punt
en dan in de loop:
this._parent["listItem" + i]._y = begin + ((i-1) * spacing) + (i * H);
ff offtopic.. Tommyfied, waarom dat script in je handtekening? :P
Tommyfied
%Europe/Berlin %870 %2005, 21:53
Je kunt natuurlijk altijd meerdere variabelen aan de vergelijking toevoegen (zoals de hoogte van elk item wat jij doet).
Je kunt al die dingen van te voren defineren of ter plekke opvragen. Dat maakt voor de werking niets uit, we lis het zo dat het vantevoren defineren wel overzichtelijker is een vaak ook sneller als je herhaadelijk een property moet opvragen (zoals _height) .. .alhoewel dat bij pakweg 15 items niet zo'n vaart zal lopen ...
Wat betreft die handtekening ... vond dat wel grappig en staat voor het aantal dagen dat rest voor ik naar Rotterdam vertrek en daar de opleiding C&MD ga doen.
theFlashWizard
%Europe/Berlin %877 %2005, 22:03
who das niet het enigste dat ik doe he.. ik pak de hoogte van de knoppen en tussenruimte apart.. dit zodat het net iets dynamischer wordt..
daarnaast zou het iets sneller moeten gaan als je dingen van te voren aanmaakt.. scheelt nu niks.. maar met grotere dingen wel.. en dan kun je het jezelf maar aangeleerd hebbe.. :)
davyvh
%Europe/Berlin %879 %2005, 22:06
ff over 1. die this._parent["listItem" + i].gotoAndStop(1); moet dan wel binnen een for loop he.. Kweet dat jij dat weet.. maar of davyvh dat doorhad..
Is dit beledigend bedoeld??
Waarvoor is die loop trouwens nodig?
In de fla staat dit:
for( var y = 0, l = idArray.length; y<l; y++){
y zijn dus ALLE items...
En die 81 staat voor de ruimte die nodig is om open te klappen... (ok, dit zou ik in een var kunnen plaatsen, maar het getal wordt maar 1 keer opgeroepen)
Het is inderdaad een zeer onordelijk script.
Ik gebruik weinig variabelen, omdat ik vond dat ze niet nodig waren.
De variabelen worden ongeveer 2 keer gebruikt...
Maar dat heeft er allemaal weinig mee te maken.
Er zijn 2 regels fout, en daar zou ik een correctie voor willen...
theFlashWizard
%Europe/Berlin %883 %2005, 22:11
sorry hoor.. maar die this._parent["listItem"+y].gotoAndStop(1); staat niet in die loop toch.. of ben ik nou vaag aant denken..
en nee dat was niet beledigent bedoelt.. alleen voor de zekerheid..
begin in n var plaatsen is alleen verstandiger omdat je het dan bovenaan kan zetten in je fla en je de dingen dan makkelijker en overzichtelijker terug kan vinden..
mshn als je ze nu is wel gebruikt... mshn zie je dan wel de fout..
mag je best willen.. maar dan moet je er zelf ook wel wat voor doen..dus probeer is wat we nu allemaal voorstelle..
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.