class Gallery{ ////////////////////// // member variablen // ////////////////////// /** Der Ordner aus dem die Galerie geladen werden soll relativ zur swf. **/ public var galerienOrdner:String = "Bilder"; /** speichert den aktuellen Standort im Verzeichnissbaum **/ public var history : Array = new Array(galerienOrdner); /** thumbnail breite ( u hoehe ) **/ public var thumbBreite : Number = 80; // public var thumbHoehe : Number = 80; /** bildgröße **/ public var jpegbreite : Number = 400; public var jpeghoehe : Number = 300; /** thumbnail Abstand vertical / horizontal **/ public var thumbAbstVert : Number = 10; // public var thumbAbstHoriz : Number = 10; /** Die Breite des Rahmens um die Bilder Die Farbe des Rahmens wird über das mc border festgelegt **/ public var thumbRahmenBreite : Number = 4; /* Die position der grossen Bilder, wobei centerX u CenterY den Mittelpunkt der grossen Bilder beschreiben. */ public var centerX : Number; public var centerY : Number; /* Hintergrundfarbe des Ladebildschirms */ public var loadingScCol : Number = 0xCCCCCC; /* LoadVarObject in dem die Daten aus den PHP-Dateien gespeichert werden bzw. mit dem die Daten aus der swf verschickt werden. */ public var daten : XML; /* Das Array das die Ordnernamen enthält */ public var ordnerArray : Array = new Array(); /* Leg fest ob sich in dem Ordner nur Bilder befinden oder ob es auch noch andere (Sub)Ordner gibt die einen weiteren "Ast" im Verzeichnissbaum darstellen. */ public var picsOnly : Boolean = false; /* Zählt mit wieviele thumbnail Bilder schon geladen wurden */ public var thumbsloaded : Number = 0; /* Die X- und Y-Position der ThumbNails */ public var thumbsX : Number = 0; public var thumbsY : Number = 0; /* Anzahl der Sekunden nach denen abgebrochen werden soll, falls ein Bild nicht erfolgreich geladen werden konnte */ public var maxConnectionTime : Number = 15; /* Sollen die Bilder automatisch angezeigt werden ? */ public var autoSwitch : Boolean = false; /* Anzahl der Sekunden die die Bilder angezeit werden sollen */ public var autoSwitchDelay : Number = 2; /* Der Interval fuer die autoSwitch funktion */ private var autoSwitchInterval : Number; /* Speichert den Index des zuletzt gezeigt Bildes */ private var currentPic : Number = 0; ////////////// // Methoden // ////////////// // Laden // /////////// public function loadData(path:MovieClip):Void{ var me:Object = this; // <- Referenz auf Instanz me.clearAutoSwitchInterval(path); // loading screen var loadMc:MovieClip = path.createEmptyMovieClip( "loader", 10, {_x:0, _y:0} ); with( loadMc ){ Stage.scaleMode = "noBorder"; beginFill(me.loadingScCol, 40); lineTo(0, Stage.height); lineTo(Stage.width, Stage.height); lineTo(Stage.width, 0); lineTo(0, 0); endFill(); attachMovie("loadingData","at_loadingData",10, {_x:Stage.width/2, _y:Stage.height/2} ); } // ..ende loading screen // laden der daten me.daten = new XML(); me.daten.ignoreWhite = true; me.daten.onLoad = function(success){ if(success){ loadMc.removeMovieClip(); me.ordnerArray = new Array(); // speichern der daten in arrays for(var i:String in me.daten.firstChild.childNodes){ me.ordnerArray.push(me.daten.firstChild.childNodes[i].firstChild.nodeValue); } me.ordnerArray.reverse(); me.picsOnly = Boolean( int(me.daten.firstChild.attributes["picsOnly"])); // if(me.picsOnly){ path.gotoAndStop(path._currentframe+2); } else { path.gotoAndStop(path._currentframe+1); } } } me.daten.load("datenXML.php?dir=" + me.galerienOrdner); // ..ende laden der daten } // Verzeichnisbaum // ///////////////////// public function paintTree(path:MovieClip):Void{ var me:Object = this; // <- Referenz auf Instanz me.clearAutoSwitchInterval(path); me.currentPic = 0; // damit der rahmen im Vordergrund bleibt ! path.rahmen.swapDepths(20); // back button path.back.onPress = function(){ //path.rahmen.removeMovieClip(); // nicht unbedingt notwendig path.gotoAndStop(path._currentframe - 1); me.galerienOrdner = me.history[me.history.length-1]; me.history.pop(); // mc für die Ordner-Buttons entfernen galerienMc.removeMovieClip(); } // ..ende back buttton //mc für die Ordner-Buttons erstellen var galerienMc:MovieClip = path.createEmptyMovieClip("gMC",1); with( galerienMc ){ _x = 30; _y = 30; for(i=0; i=360) ? i = 1 : i += 0.5; // immer wieder von 0 is 360 this._xscale = this._yscale = wabMc_Size-5 + 2*Math.sin(i); // x und x scale abhhängig vom sinus von i => Schwingung } } } ordner.onRollOut = function(){ //out with( this ){ delete wabbel_ordner_mc.onEnterFrame; wabbel_ordner_mc._xscale = wabbel_ordner_mc._yscale = 100; } } ordner.onRelease = function(){ path.prevFrame(); me.history.push(me.galerienOrdner); me.galerienOrdner += "/" + this.gal_name.text; // mc für die Ordner-Buttons entfernen galerienMc.removeMovieClip(); } }// ..end for } // ..end with } // Thumbnails // //////////////// public function paintThumbnails(path:MovieClip):Void{ var me:Object = this; // <- Referenz auf Instanz // zeigt an wieviele thumbnails schon geladen wurden und // dient später auch als index für die thumbnails me.thumbsloaded = 0; // back button path.back.onPress = function(){ path.gotoAndStop(path._currentframe - 2); me.galerienOrdner = me.history[me.history.length-1]; me.history.pop(); path.containerJPG.removeMovieClip(); path.thumbBilder.removeMovieClip(); } // ..ende back buttton ////////////////////////////////////////////////////////////////// // thumbnail mc erstellen und füllen // ////////////////////////////////////////////////////////////////// var thumbs:MovieClip; // thumbBilder mc erstellen (conatiner für alle thumbnails) thumbs = path.createEmptyMovieClip("thumbBilder",10); thumbs._x = me.thumbsX + me.thumbRahmenBreite; thumbs._y = me.thumbsY + me.thumbRahmenBreite; // die thumbnails in thumbBilder loaden me.addThumbNail(thumbs); ////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////// // container mc und loaderscreen der grossen Bilder // ////////////////////////////////////////////////////////////////// path.createEmptyMovieClip("containerJPG",-1); path.createEmptyMovieClip("geladenPruefer",11); path.geladenPruefer.startTime = getTimer(); path.geladenPruefer.onEnterFrame = function(){ if( this._parent.containerJPG.getBytesTotal() > 512 && this._parent.containerJPG.getBytesLoaded() >= this._parent.containerJPG.getBytesTotal() ){ //positionierung des containers in der Mitte this._parent.containerJPG._x = me.centerX - this._parent.containerJPG._width / 2; this._parent.containerJPG._y = me.centerY - this._parent.containerJPG._height / 2; this._parent.at_loadingData.removeMovieClip(); // entfernen des loadingData mc } if(getTimer() - this.startTime > me.maxConnectionTime*1000){ this._parent.at_loadingData.removeMovieClip(); // entfernen des loadingData mc } } ////////////////////////////////////////////////////////////////// /// auto Switch starten wenn benoetigt if(me.autoSwitch) me.startAutoSwitch(path); } // addThumbNail // ////////////////// public function addThumbNail(path:MovieClip):Void{ var me:Object = this; // <- Referenz auf Instanz var pic:MovieClip; // mc einbinden / erzeugen with(path){ var pic:MovieClip = createEmptyMovieClip("bild_" + (me.thumbsloaded + me.thumbsloaded)); //bild laden with( pic ){ var thumb_jpg:MovieClip = createEmptyMovieClip("thumb_jpg", getNextHighestDepth()); var i:Number = me.thumbsloaded; var pfad:String = me.galerienOrdner + "/" + me.ordnerArray[me.thumbsloaded]; var thumbLoader:MovieClipLoader = new MovieClipLoader(); var thumbListener:Object = new Object(); // wenn das Bild fertig geladen ist thumbListener.onLoadInit = function(thumb_jpg:MovieClip):Void{ // Wenn das thumbnail Bild fertig geladen ist, // positionieren Rahmen anfügen und weiter zum nächsten Bild with(thumb_jpg._parent){ //---------------------------- Positionieren der Bilder -------------------------------- // Abstand der thumbnails vom linken Rand _x = 0; // alle Bilder anhand ihrer gröss positioniern außer dem ersten Bild if(me.thumbsloaded > 0) { // <- alle anderen Bilder _y = _parent["bild_" + (i-1)]._y + _parent["bild_" + (i-1)]._height + me.thumbAbstVert; } else { // <- erstes Bild // Abstand der Thumbnails vom oberen Rand _y = 0; } //---------------------------- Anfügen des Rahmens -------------------------------- attachMovie("border","thumb_border", -1); thumb_border.onEnterFrame = function(){ this._width = this._parent._width + me.thumbRahmenBreite * 2; this._height = this._parent._height + me.thumbRahmenBreite * 2; this._x = - me.thumbRahmenBreite; this._y = - me.thumbRahmenBreite; if( this._width >= 15) delete this.onEnterFrame; } //---------------------------- Die Button funktion -------------------------------- onPress = function():Void{ // die grossen Bilder werden in den container geladen this._parent._parent.containerJPG.loadMovie("create.php?quelle="+pfad+"&breite="+me.jpegbreite+"&hoehe="+me.jpeghoehe); // loading mc wird attacht this._parent._parent.attachMovie("loadingData","at_loadingData",9, {_x:me.centerX, _y:me.centerY} ); this._parent._parent.at_loadingData._x -= this._parent._parent.at_loadingData.width; this._parent._parent.at_loadingData._y -= this._parent._parent.at_loadingData.height; me.currentPic = i; } //---------------------------- zum naechsten Bild -------------------------------- // weiterzählen me.thumbsloaded = me.thumbsloaded+1; // die Funktion falls nötig erneut aufrufen damit das nächste kleine Bild geladen wird if(me.ordnerArray.length > me.thumbsloaded){ me.addThumbNail(path); } }//.. end with thumb_jpg._parent }//..end thumbLoader.onLoadComplete thumbLoader.addListener(thumbListener); thumbLoader.loadClip("createThumb.php?quelle="+pfad+"&breite="+me.thumbBreite+"&hoehe="+me.thumbHoehe, thumb_jpg); }//..end with pic }//..end with path } // nextPic // ///////////// public function nextPic(path:MovieClip):Void { var me:Object = this; // <- Referenz auf Instanz me.currentPic += (me.currentPic < me.ordnerArray.length-1 ) ? 1 : -me.currentPic ; var pfad:String = me.galerienOrdner + "/" + me.ordnerArray[ me.currentPic ]; // die grossen Bilder werden in den container geladen path.containerJPG.loadMovie("create.php?quelle="+pfad+"&breite="+me.jpegbreite+"&hoehe="+me.jpeghoehe); // loading mc wird attacht path.attachMovie("loadingData","at_loadingData",9, {_x:me.centerX, _y:me.centerY} ); path.at_loadingData._x -= path.at_loadingData.width; path.at_loadingData._y -= path.at_loadingData.height; } // prevPic // ///////////// public function prevPic(path:MovieClip):Void{ var me:Object = this; // <- Referenz auf Instanz me.currentPic += (me.currentPic > 0) ? -1 : (me.ordnerArray.length-1); var pfad:String = me.galerienOrdner + "/" + me.ordnerArray[ me.currentPic ]; // die grossen Bilder werden in den container geladen path.containerJPG.loadMovie("create.php?quelle="+pfad+"&breite="+me.jpegbreite+"&hoehe="+me.jpeghoehe); // loading mc wird attacht path.attachMovie("loadingData","at_loadingData",9, {_x:me.centerX, _y:me.centerY} ); path.at_loadingData._x -= path.at_loadingData.width; path.at_loadingData._y -= path.at_loadingData.height; } // startAutoSwitch // ///////////////////// public function startAutoSwitch(path:MovieClip):Void{ var me:Object = this; // <- Referenz auf Instanz //erstes Bild sofort anzeigen me.nextPic(path); me.autoSwitchInterval = setInterval( function():Void{ me.nextPic(path); } , me.autoSwitchDelay*1000, path); me.autoSwitch = true; } // stopAutoSwitch // /////////////////// public function stopAutoSwitch(path:MovieClip):Void{ var me:Object = this; // <- Referenz auf Instanz me.clearAutoSwitchInterval(path); me.autoSwitch = false; } // clearAutoSwitchInterval // ///////////////////////////// public function clearAutoSwitchInterval(path:MovieClip):Void{ var me:Object = this; // <- Referenz auf Instanz clearInterval( me.autoSwitchInterval ); } } // ..end Class Gallery