Hilfedokument zum TreeView-Menüclip

Transcription

Hilfedokument zum TreeView-Menüclip
Flash-MX-ActionScript [KlappMenuExtern.swf]
Autor: Daniel Deckensattl
10.08.2015 / Seite 1 / 5
Hilfedokument zum TreeView-Menüclip
Diese kleine Dokumentation zeigt, wie man mit Flash ein Klappmenü (TreeView) programmieren kann. Dieser nur 26 KB grosse MovieClip wird extern konfiguriert und kann beliebig
viele Menüs und Untermenüs verwalten. Die anzuzeigenden MovieClips sind auch extern vorhanden und werden bei Bedarf hinzugeladen.
http://deckensattl.goip.de/ddflashpage/
Flash-MX-ActionScript [KlappMenuExtern.swf]
Autor: Daniel Deckensattl
10.08.2015 / Seite 2 / 5
ActionScript 1.0 Flash MX
Sehen wir uns aber nun den ActionScript-Code etwas genauer an. Der gesamte ActionScript-Code im ersten Schlüsselbild des Klappmenu-MovieClips. Die Konfigurationsdatei
KlappMenuExtern.txt wird eingelesen und die Menüs in Arrays verpackt. Hier der Beispielinhalt der Konfigurationsdatei:
&Hauptmenus=Menu1:Hilfebox1.swf,Menu2:Hilfebox2.swf,Menu3:Hilfebox3.swf &Untermenus=Test1:Hilfe1Unterbox1.swf,Test2:Hilfe1Unterbox2.swf,Test3:
Hilfe1Unterbox3.swf,Test4:Hilfe1Unterbox4.swf £Test5:Hilfe2Unterbox1.swf,Test6:Hilfe2Unterbox2.swf,Test7:Hilfe2Unterbox3.swf
£Test8:Hilfe3Unterbox1.swf,Test9:Hilfe3Unterbox2.swf,Test10:Hilfe3Unterbox3.swf &HilfePosX=150&HilfePosY=30&MenuPosX=20&MenuPosY=10&
Die Hauptmenus sind mit Kommas getrennt und enthalten jeweils den anzuzeigenden Menüeintrag und den SWF-MovieClipname der auf Knopfdruck hinzugeladen wird. Wird auf
das Ordnersymbol eines der Hauptmenüs geklickt, wird automatisch der dazugehörige MC (MovieClip) geladen und angezeigt. Erst ein Klick auf das Plus oder Minus-Zeichen klappt
das Hauptmenu auf oder zu.
Die Untermenus sind nach dem selben Prinzip in der Konfigurationsdatei hinterlegt, zuerst der anzuzeigenden Submenünamen gefolgt vom MC der dazu angezeigt werden soll
(anstatt SWF-Datei können auch JPG-Dateien [No-Progress] verwendet werden). Die Untermenüeinträge sind dann mit einem £-Zeichen voneinander getrennt.
Und zum Schluss werden die X- und Y-Positionen des Menüs (MenuPosX und MenuPosY) und der Hilfeclipdatei (HilfePosX und HilfePosY) angegeben.
Wird dieser Clip in einem anderen FlashClip eingesetzt, müssen nur die Ordner Klappmenuordner zusammen mit dem Flash UI Components-Ordner und dem KlappMenu-Clip in die
neue Bibliothek kopiert werden und schon steht das Hilfe-TreeView-Menü zur Verfügung. Einzig der Konfigurationsdateiname erhält dann denselben Namen wie der Ziel-MC, sodass
dieser geladen werden kann.
Der ActionScript-Code ist in diesem Fall sehr kurz und Bedarf keiner grossen Erklärung, da hier nur die in Arrays verpackten Menüs aufklappbar angezeigt werden.
Hier nun der komplette ActionScript 1.0-Code (aus Flash MX):
/*
Autor: Daniel Deckensattl
Erstellt: 10.08.2015
Update: 10.08.2015
TreeView-Menü welches extern konfiguriert wird. Die Hilfe-MovieClips müssen extern
erstellt werden.
*/
// -- Aktiviert deutsche Umlautzeichen bei Import der TXT/HTML-Dateien ------------------------------System.useCodepage = true;
var
var
var
var
iHilfePosX = 150;
iHilfePosY = 30;
iMenuPosX = 20;
iMenuPosY = 10;
// -- enthält den Namen der Konfigurations-Datei
var strCFGAktuell = SWFName(false);
var strCFGAktuell = SWFName(true) + "/" + strCFGAktuell+".txt";
aHauptMenus = new Array(); aUnterMenus = new Array(); aHauptMenuStatus = new Array();
function MenuInit() {
iOrdnerStatus = 1;
iMnuX = iMenuPosX; iMnuY = iMenuPosY;
http://deckensattl.goip.de/ddflashpage/
Flash-MX-ActionScript [KlappMenuExtern.swf]
Autor: Daniel Deckensattl
for(u=0;u<aHauptMenus.length;u++) {
iMnuY = iMnuY+16;
MCName = "Menu"+(u+1);
attachMovie("KlappHauptMenu", MCName, 10+u);
eval(MCName)._x = iMnuX;
eval(MCName)._y = iMnuY;
eval(MCName).Menuname = MCName;
aMenuInhalt = aHauptMenus[u].split(":");
eval(MCName).HilfeMC = aMenuInhalt[1];
eval(MCName).tfLabel = aMenuInhalt[0];
eval(MCName).onPress = function() {
MenuAktivität(this._name);
}
//-- Erste Hauptmenu-Hilfe anzeigen
if(u==0) {
sMCPath = SWFName(true) + "/" + aMenuInhalt[1];
loadMovie(sMCPath, "HilfeBox");
eval("HilfeBox")._x = iHilfePosX; eval("HilfeBox")._y = iHilfePosY;
}
}
}
function MenuSubAktivität(sSubMenu) {
//Untermenu: Menu1Sub3
aSubMenuInhalt = sSubMenu.split("Sub");
iSubMenuArray = int(aSubMenuInhalt[0].substr(4,3));
iSubMenuIndex = int(aSubMenuInhalt[1])-1;
trace("Untermenu: "+sSubMenu + " Hauptmenu: "+iSubMenuArray);
aSubOrdner = aUnterMenus[iSubMenuArray-1];
sSubTemp = aSubOrdner[iSubMenuIndex].split(":");
trace(sSubMenuInhalt);
sHilfeBox = sSubTemp[1];
sMCPath = SWFName(true) + "/" + sSubTemp[1];
loadMovie(sMCPath, "HilfeBox");
eval("HilfeBox")._x = iHilfePosX; eval("HilfeBox")._y = iHilfePosY;
}
function MenuAktivität(sMenu) {
iMnuIndex = int(sMenu.substr(4,3));
trace("sMenu: "+sMenu+" Index: "+iMnuIndex);
if(eval(sHauptMenu)._xmouse < 15) {
aHauptMenuStatus[iMnuIndex-1] = (aHauptMenuStatus[iMnuIndex-1] == 0) ? 1: 0;
}
iStartY = eval("Menu1")._y; iStartX = eval("Menu1")._x;
for(w=0;w<aHauptMenuStatus.length;w++) {
sHauptMenu = "Menu"+(w+1);
iMnuIndex = (w+1);
if(eval(sHauptMenu)._xmouse < 15) {
eval(sHauptMenu)._y = iStartY;
}
aMenuInhalt = aHauptMenus[w].split(":");
http://deckensattl.goip.de/ddflashpage/
10.08.2015 / Seite 3 / 5
Flash-MX-ActionScript [KlappMenuExtern.swf]
Autor: Daniel Deckensattl
if(sMenu == sHauptMenu) {
sMCPath = SWFName(true) + "/" + aMenuInhalt[1];
loadMovie(sMCPath, "HilfeBox");
eval("HilfeBox")._x = iHilfePosX; eval("HilfeBox")._y = iHilfePosY;
}
trace("x: "+eval(sHauptMenu)._xmouse+" y: "+eval(sHauptMenu)._ymouse);
//-- 0 = offen / 1 = zu
if(eval(sHauptMenu)._xmouse < 15) {
aSubOrdner = new Array();
aSubOrdner = aUnterMenus[w];
trace("Subordner-Länge: "+aSubOrdner.length);
if(aHauptMenuStatus[w] == 0) {
//-- Untermenüs zeigen
eval(sHauptMenu).OrdnerStatus.gotoAndStop("plus");
eval(sHauptMenu).Ordner.gotoAndStop("zu");
for(i=0;i<aSubOrdner.length;i++) {
eval("Menu"+iMnuIndex+"Sub"+(i+1)).removeMovieClip();
}
iStartY = iStartY+16;
} else {
//-- Untermenüs öffnen
eval(sHauptMenu).OrdnerStatus.gotoAndStop("min");
eval(sHauptMenu).Ordner.gotoAndStop("offen");
//aHauptMenuStatus[w] = 0;
trace("Subordner-Länge: "+aSubOrdner.length);
//trace("Name: "+"Menu"+iMnuIndex+"Submenu"+" Wert: "+eval("Menu"+iMnuIndex+"Submenu").length);
for(i=0;i<aSubOrdner.length;i++) {
iStartY = iStartY+16;
attachMovie("KlappUntermenu", "Menu"+iMnuIndex+"Sub"+(i+1), (iMnuIndex*100)+i);
trace("Name: "+"Menu"+iMnuIndex+"Sub"+(i+1));
eval("Menu"+iMnuIndex+"Sub"+(i+1))._x = iStartX;
eval("Menu"+iMnuIndex+"Sub"+(i+1))._y = iStartY;
sSubMenuInhalt = aSubOrdner[i];
aSubMenuInhalt = sSubMenuInhalt.split(":");
eval("Menu"+iMnuIndex+"Sub"+(i+1)).tfLabel = aSubMenuInhalt[0];
eval("Menu"+iMnuIndex+"Sub"+(i+1)).onPress = function() {
MenuSubAktivität(this._name);
}
}
iStartY = iStartY+16;
}
}
}
}
/* ------------------------------------------------------------------------------------------------------// -- Liefert entweder den eigenen aktuellen SWF-Dateipfad (false/nothing) oder nur den SWF-Pfad (true)! ¦
// -- Befindet sich Clip in einem anderen Clip kann die Parentebene als Ganzzahl angegeben werden in der ¦
// -- sich der ParentClip befindet (2. Arg.) es wird dann der Parnet-Clip-URL-Name zurückgegeben.
¦
// -- so kann zB. ein Menuclip (immer dieselbe Datei > cachespeed) verschieden konfig. werden
¦
// ------------------------------------------------------------------------------------------------------*/
function SWFName(bolMitPfad, parentEbene) {
var bolPath = (typeof (bolMitPfad) != "undefined") ? bolMitPfad : false;
var bolParentExist = (typeof (_parent._x) != "undefined") ? true : false;
var pEbene = (typeof (parentEbene) != "undefined") ? parentEbene : 0;
var intNameStart = 0;
var strDateiname = new String();
var strThisUrl = new String();
var strPrntUrl = new String();
// -- Parent-URL wenn nötig ermitteln
var strThisUrl = this._url;
http://deckensattl.goip.de/ddflashpage/
10.08.2015 / Seite 4 / 5
Flash-MX-ActionScript [KlappMenuExtern.swf]
Autor: Daniel Deckensattl
var strPrntUrl = this._url;
var strPEbene = "";
if (pEbene != 0) {
for (i=1; i<parentEbene; i++) {
strPEbene &= "_parent";
}
strPrntUrl = eval(strPEbene)._url;
}
// -- Wenn kein Parentclip vorhanden ist normale URL nehmen
var strNewURL = ((bolParentExist == true) && (pEbene>0)) ? strPrntUrl : strThisUrl;
intNameStart = strNewURL.lastIndexOf("/");
strDateiname = strNewURL.slice(intNameStart+1, strNewURL.length-4);
if (bolPath == true) {
strDateiname = strNewURL.slice(0, intNameStart);
}
return strDateiname;
}
//-- Ermöglicht das Doppelklicken auf einen MovieClip
movieclip.prototype.doubleClick = function(speed) {
if ( getTimer()-oldTime <= speed ) return(true);
oldTime=getTimer();
clickcount=0;
}
/* ----------------------------------------------------------------------------------------------------------------Mögliche Start-TXT-Datei mit Vorgabe-Textwerten auslesen und sofort anzeigen
----------------------------------------------------------------------------------------------------------------*/
var myCFGLoadVars = new LoadVars();
myCFGLoadVars.onLoad = function(onSuccess) {
if (onSuccess) {
//-- hier werden Initialparameter eingelesen, momentan nur this.ProgrammPfad
//&Hauptmenus=Menu1:Hilfebox1,Menu2:Hilfebox2,Menu3:Hilfebox3&
//-- zuerst alle Hauptmenüs einsammeln
aHauptMenus = this.Hauptmenus.split(",");
for(r=0;r<aHauptMenus.length;r++) {
aHauptMenuStatus.push(0);
}
//-- Dann die Untermenüs
aUnterMnu = this.Untermenus.split("£");
for(r=0;r<aUnterMnu.length;r++) {
aSubMenus = aUnterMnu[r].split(",");
aUnterMenus.push(aSubMenus);
}
for(x=0;x<aUnterMenus.length;x++) {
trace(aUnterMenus[x]);
}
iHilfePosX
iHilfePosY
iMenuPosX
iMenuPosY
//-- Jetzt die Menu- und Hilfeclip-Positionen einlesen
= int(this.HilfePosX);
= int(this.HilfePosY);
= int(this.MenuPosX);
= int(this.MenuPosY);
//-- Menu nun aufbauen
MenuInit();
} else {
trace("Fehler: Datei nicht gefunden");
}
};
//-- Jetzt gleichnamige (wie unser Clip selbst) txt-CFG-Datei einlesen
myCFGLoadVars.load(strCFGAktuell);
stop();
http://deckensattl.goip.de/ddflashpage/
10.08.2015 / Seite 5 / 5

Documents pareils