PDA

Volledige versie bekijken : Mappen navigater maken


xxx
%Europe/Berlin %901 %2010, 22:38
Hej flashers;)

Ik ben een site aan het maken en moet het mogelijk maken voor de gebruiker om door de mappen te navigeren. Daarvoor heb ik dus de mappen structuur opgeslagen in een xml.

Deze zie je hier:
<Hierarchie>
<SubjectName>"Pictures"</SubjectName>
<SubSubjects>
<Subject>
<SubjectName>"Brick"</SubjectName>
<SubSubjects>
<Subject>
<SubjectName>"Brick Medieval"</SubjectName>
<SubSubjects></SubSubjects>
</Subject>
<Subject>
<SubjectName>"Brick Rounded"</SubjectName>
<SubSubjects></SubSubjects>
</Subject>
<Subject>
<SubjectName>"Floors"</SubjectName>
<SubSubjects></SubSubjects>
</Subject>
</SubSubjects>
</Subject>
<Subject>
<SubjectName>"Concrete"</SubjectName>
<SubSubjects>
<Subject>
<SubjectName>"Bare"</SubjectName>
<SubSubjects></SubSubjects>
</Subject>
<Subject>
<SubjectName>"Bunker Wall"</SubjectName>
<SubSubjects></SubSubjects>
</Subject>
<Subject>
<SubjectName>"Concrete New"</SubjectName>
<SubSubjects></SubSubjects>
</Subject>
<Subject>
<SubjectName>"Floors Damaged"</SubjectName>
<SubSubjects></SubSubjects>
</Subject>
</SubSubjects>
</Subject>
</SubSubjects>
</Hierarchie>

Maar nu weet ik dus niet hoe het verder moet....
Ik wil namelijk niet 20 for loops maken voor de diepte van de mappenstructuur. Er moet steeds opnieuw in de 'SubSubjects' gekeken worden hoe diep die door gaat.

Uiteindelijk wil ik iets maken zoals de windows mappen navigatie:
http://a.yfrog.com/img221/3055/navigater.jpg (http://yfrog.com/65navigaterj)

Jan
%Europe/Berlin %905 %2010, 22:43
Gebruik een tree component/class en zorg dat de opmaak van je xml aan de verwachtingen van die tree component/class voldoet en dan is het niet meer dan:

var tree=new Tree();
tree.dataProvider = yourXml;
addChild(tree);


In de Flash components zit standaard geen tree component maar in Flex zit er wel eentje en bij de Yahoo Astra tools/components zag ik er laatst ook eentje voor Flash/AS3 (die heel simpel werkt). Via Google vind je er vast nog wel wat. En als je het zelf helemaal wil maken is het geen slecht idee om eens te gaan kijken hoe zij het hebben aangepakt.

http://developer.yahoo.com/flash/astra-flash/tree/

Jan

xxx
%Europe/Berlin %560 %2010, 14:26
Oké super! Zal er thuis naar kijken! Ik ben wel van plan om het helemaal zelf te maken. Dit is voor mij ook een leerdoel. Heb dit al eerder geprobeerd en steeds maar vastgelopen op dit. Wil het nu nogmaals proberen.

nuvorm
%Europe/Berlin %431 %2010, 11:21
>Ik wil namelijk niet 20 for loops maken voor de diepte van de mappenstructuur

in principe is dat wel wat er gebeurt.
alleen zorg je ervoor dat het for loop gedeelte een herbruikbaar element wordt, binnen een functie dus.

de xml maak je volgens mij met subject en subsubject verwarrend.

<root>
<folder id="folder naam">
<folder id="folder naam">
<item id="item_naam.exe">
</item>
</folder>
</folder>
<folder id="folder naam">
</folder>
</root>

je kunt nu telkens uit een element (in eerste instantie root) alle childs filteren die <folder> zijn.

vervolgens filter je hier weer alle childs uit die folder zijn.

omdat dit redelijk diep kan gaan loop je met het gebruik van een for loop vast als je elk child opvraagt om te kijken of deze nog childs heeft.

je kunt hiervoor beter gebruik maken van een timer event.
in de functie van de timer hadel je dit dan af.

xxx
%Europe/Berlin %893 %2010, 22:26
@Adnez
Heb jou tip gevolgd door te kijken hoe zij dit voor elkaar hebben gekregen. Ik snapte namelijk niet hoe ik bijvoorbeeld functies kon toekennen aan hun tree. Heb nu een eigen functie bedacht.
Het probleem wat ik noemde met dat je niet wist hoe diep je met de for loop moest kijken heb ik opgelost. Door op het eind van de functie een if statement te zetten die kijkt of er nog meer subjects in zitten. Zo ja runt hij deze functie op die subjects af. Dit blijft zich dan afspelen tot er geen subjects meer over zijn.

@nuvorm
Inderdaad, zal dat nog aanpassen.