Zurück   Flashforum > Flash > Stuff

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-09-2010, 17:13   #1 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
[Stuff] Pulldown-Menue Dynamisch AS3

Servus Gemeinde
Hatte gestern schon was gepostet, des war aber Mist :-)
Diese PullDown-Geschichte funktioniert Dynamisch, man braucht nur ein/zwei Buttons in der Libary,
mit einem Klassenbezeichner!
Gefüttert wird die Navigation mit xml, das kann man auch weglassen, und die Arrays von Hand befüllen!
Können tut sie, html, phng, jpg, swf und statische MovieClips (im ersten Frame), hatte schon auch eine Variante mit Frame-Bezeichner, aber das hab ich wieder raus gemacht
Ich werde das ganze in ein Paket schieben, sobald Bugs oder andere Fehlerchen beseitigt sind.
Anregungen, Kritik oder Verbesserungen immer gerne.
ActionScript:
  1. import com.greensock.*;
  2. import com.greensock.easing.*;
  3. //die Verknüpften Klassen in der Bibliothek///////////////////////////////////////
  4. var mainBTNClass:String = "mainBtnClass";
  5. var subBTNClass:String = "subBtnClass";
  6. //Arrays zu speichern der Werte aus der XML///////////////////////////////////////
  7. var mainArray:Array = [];
  8. var subArray:Array = [];
  9. var linkArray:Array = [];
  10. //Arrays zum speicher der Buttons/////////////////////////////////////////////////
  11. var mainBtnArray:Array = [];
  12. var subBtnArray:Array = [];
  13. //Array zum temporären speichern des geladenen Contents///////////////////////////
  14. var childArray:Array = [];
  15. //Variablen für die Ordner der png, jpg und swf's/////////////////////////////////
  16. var swfFiles:String = "./swf_files/";
  17. var pictureFiles:String = "./picture/";
  18. //Variable zum temporären speichern der MovieClips innerhalb der swf//////////////
  19. var innerMc:MovieClip;
  20. //x&y position des Menues/////////////////////////////////////////////////////////
  21. var menueXPos:int = 170;
  22. var menueYPos:int = 20;
  23. //Variable zum speicher der Buttonhöhe und breite/////////////////////////////////
  24. var mainWidth:Number;
  25. var mainHeight:Number;
  26. //Variable zum übergeben der ID des MainButtons an die SubButton//////////////////
  27. var baseID:int;
  28. //Variable zum "RollOver/RollOut abschalten bei klick auf die SubButtons//////////
  29. var pull_it:Boolean = false;
  30. //die im swf eingebundenen MovieClips unsichtbar schalten/////////////////////////
  31. movieclip1_mc.visible = movieclip2_mc.visible = false;
  32. //das erstellen der MainButton//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  33. function init_mainMenue () {
  34.     for (var j:int =0; j<mainArray.length; j++) {
  35.         var mainClass:Class = getDefinitionByName(mainBTNClass) as Class;
  36.         var mainInst:MovieClip = new mainClass();
  37.         mainWidth = mainInst.width;
  38.         mainHeight = mainInst.height;
  39.         mainBtnArray[j] = addChild(mainInst) as MovieClip;
  40.         mainBtnArray[j].test_txt.text = mainArray[j];
  41.         mainBtnArray[j].x = menueXPos+(mainWidth*j);
  42.         mainBtnArray[j].y = menueYPos;
  43.         mainBtnArray[j].ID = j;
  44.         mainBtnArray[j].buttonMode = true;
  45.         mainBtnArray[j].addEventListener (MouseEvent.ROLL_OVER, pull_down);
  46.         mainBtnArray[j].addEventListener (MouseEvent.ROLL_OUT, pull_up);
  47.         function pull_down (e:Event):void {
  48.             if (pull_it == false) {
  49.                 baseID = e.target.ID;
  50.                 for (var i:int =0; i<subBtnArray[e.target.ID].length; i++) {
  51.                     TweenMax.to (subBtnArray[e.target.ID][i], 0.5, {y:subBtnArray[e.target.ID][i].endY, ease:Circ.easeOut});
  52.                 }
  53.             }
  54.         }
  55.         function pull_up (e:Event):void {
  56.             if (pull_it == false) {
  57.                 for (var i:int =0; i<subBtnArray[e.target.ID].length; i++) {
  58.                     TweenMax.to (subBtnArray[e.target.ID][i], 0.3, {y:0, ease:Circ.easeIn});
  59.                 }
  60.             }
  61.         }
  62.     }
  63.     init_subMenue ();
  64. }
  65. //das erstellen der SubButton//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  66. function init_subMenue () {
  67.     for (var j:int = 0; j<subArray.length; j++) {
  68.         subBtnArray[j] = [];
  69.         for (var i:int =0; i<subArray[j].length; i++) {
  70.             var subClass:Class = getDefinitionByName(subBTNClass) as Class;
  71.             var subInst:MovieClip = new subClass();
  72.             subBtnArray[j][i] = mainBtnArray[j].addChild(subInst);
  73.             subBtnArray[j][i].sub_ID = i;
  74.             subBtnArray[j][i].x = subBtnArray[j][i].y = 0;
  75.             subBtnArray[j][i].endY = mainHeight+(mainHeight*i);
  76.             subBtnArray[j][i].test_txt.text = subArray[j][i];
  77.             subBtnArray[j][i].buttonMode = true;
  78.             subBtnArray[j][i].mouseChildren = false;
  79.             subBtnArray[j][i].addEventListener (MouseEvent.CLICK, init_file);
  80.             function init_file (e:Event):void {
  81.                 pull_it = true;
  82.                 for (var i:int =0; i<subBtnArray[baseID].length; i++) {
  83.                     TweenMax.to (subBtnArray[baseID][i], 0.3, {y:0, ease:Circ.easeIn, onComplete:switchPull});
  84.                 }
  85.                 function switchPull () {
  86.                     pull_it = false;
  87.                 }
  88.                 init_content (linkArray[baseID][e.target.sub_ID]);
  89.             }
  90.             mainBtnArray[j].setChildIndex (mainBtnArray[j].getChildAt(mainBtnArray[j].getChildIndex(subBtnArray[j][i])), 0);
  91.         }
  92.     }
  93. }
  94. //der Check um was für eine Art Content es sich handelt/////////////////////////////////////////////////////////////////////////////////////////////////////
  95. function init_content (cont_str:String) {
  96.     if (innerMc != null && cont_str.search("http") != 0) {
  97.         innerMc.visible = false;
  98.     }
  99.     if (cont_str.search("http") == 0) {
  100.         navigateToURL (new URLRequest(cont_str),"_blank");
  101.     }
  102.     if (cont_str.search(".swf") == cont_str.length - 4) {
  103.         load_content (swfFiles, cont_str);
  104.     }
  105.     if ((cont_str.search(".png") == cont_str.length-4) ||(cont_str.search(".jpg") == cont_str.length-4)) {
  106.         load_content (pictureFiles, cont_str);
  107.     }
  108.     if (cont_str.search("_mc") == cont_str.length - 3) {
  109.         remove ();
  110.         innerMc = MovieClip(root)[cont_str];
  111.         innerMc.visible = true;
  112.     }
  113.  
  114. }
  115. //löscht den eingeladenen Content///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  116. function remove () {
  117.     if (childArray[0] != undefined) {
  118.         removeChild (childArray[0]);
  119.         childArray = [];
  120.     }
  121. }
  122. //der Content-Loader (nicht für html zuständig!!!///////////////////////////////////////////////////////////////////////////////////////////////////////////
  123. function load_content (folder:String, cont_load:String) {
  124.     var laden:Loader = new Loader();
  125.     laden.load (new URLRequest(folder+cont_load));
  126.     laden.contentLoaderInfo.addEventListener (Event.INIT, init_funk);
  127.     laden.contentLoaderInfo.addEventListener (Event.COMPLETE, complete_funk);
  128.     function init_funk (evt_i:Event):void {
  129.         remove ();
  130.         childArray[0] = addChild(laden);
  131.         setChildIndex (laden,0);
  132.     }
  133.     function complete_funk (evt_c:Event):void {
  134.         laden.visible = true;
  135.     }
  136. }
  137. //der XML-Loader der die Array's befüllt////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  138. var xml_loader:URLLoader = new URLLoader();
  139. xml_loader.load (new URLRequest("./xml_daten/navifile.xml"));
  140. xml_loader.addEventListener (Event.COMPLETE, parseXML);
  141. function parseXML (e:Event):void {
  142.     var xml_Doc:XML = new XML(e.target.data);
  143.     xml_Doc.ignoreWhitespace = true;
  144.     for (var i:uint = 0; i<xml_Doc.base_btn.length(); i++) {
  145.         subArray[i] = [];
  146.         linkArray[i] = [];
  147.         mainArray[i] = xml_Doc.base_btn[i]. @ id;
  148.         for (var j:uint = 0; j<xml_Doc.base_btn[i].sub_btn.length(); j++) {
  149.             subArray[i][j] = xml_Doc.base_btn[i].sub_btn[j]. @ namen;
  150.             linkArray[i][j] = xml_Doc.base_btn[i].sub_btn[j]. @ link;
  151.         }
  152.     }
  153.     init_mainMenue ();
  154. }
  155. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  156.  
Angehängte Dateien
Dateityp: zip pull_down.zip (91,7 KB, 15x aufgerufen)
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 26-09-2010, 14:47   #2 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Kleines upDate.
Jetzt kommen alle Daten aus der XML, also Tween, Ordner-Adressen, X&Y-Pos vom Menue, etc.
In der Zukunft noch zu erwarten.
..RolklOver/Out-Funktionen und Tweens für die Buttons(eigentlich MovieClips)
..Fades/Tweens für die geladen Clips, Bilder, etc.
..Textfeld Formatierung für die Button-Clips.

Bis den
Angehängte Dateien
Dateityp: zip pull_down_ff_2.zip (91,5 KB, 31x aufgerufen)
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
pulldown menue / wie würdet ihr den "aktiven" bauen? get-the-flash ActionScript 2 4 23-02-2009 23:28
Kontaktformular mit Checkboxen/Pulldown Menue saschamalter Flash 8 1 04-10-2007 17:19
pulldown menue mit animation thabigfatD Flash MX 0 20-04-2005 16:11
[ Stuff ] Menue wabber ausweichen _geo_ Stuff 11 28-02-2004 18:20
Menue dynamisch aus textfile generieren bsl Flash MX 8 01-10-2002 09:39


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:36 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele