Hallo,
ich habe jetzt das Script ein wenig Erweitert naja besser gesagt, ich habe ein Menü für verschiedene Galerien dazu programmiert.
Ansehen könnt ihr es euch hier: klick
Die Classe für das Menü kann für andere Zwecke erweitert werden, also einfach genau den Code ansehen
In der Fla erstellt ihr einfach einen mc als Button und gebt ihn den Verknüpfungsnamen: menue_mc
Danach klickt ihr einmal in die Bühne rein und geht dann auf Eigenschaften.
Dort gebt ihr im Feld Dokumentenklasse startClass ein und dann sollte es funktionieren.
Das Galeriescript musste ich ein wenig anpassen, also nehmt dieses:
loadGalerie.as
Klasse für das MenüPHP-Code:package {
import flash.display.MovieClip;
import flash.display.Shape;
import flash.display.Sprite;
import flash.display.Graphics;
import flash.display.DisplayObject;
import flash.display.LoaderInfo;
import flash.display.Loader;
import flash.events.*;
import flash.net.*;
import flash.xml.*;
import flash.net.URLRequest;
import fl.transitions.TransitionManager;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
import fl.transitions.easing.Regular;
public class loadGalerie extends Sprite {
//Deklaration der Variablen
private var myXML:XML=new XML;
private var anzReihe:uint;
private var maxHoehe:uint;
private var maxBreite:uint;
private var thumbWidth:uint;
private var thumbHeight:uint;
private var thBackColor:uint;
private var thLineStyle:uint;
private var zaehler:uint=0;
private var xPos:uint;
private var yPos:uint;
private var pictLdr:URLLoader;
private var oldPic:Sprite;
private var newPic:Sprite;
private var zReihe:uint=0;
private var thumbsPos:String;
private var thumbsAbstand:uint;
private var conPosX:uint;
private var conPosY:uint;
private var abStandBig:uint;
//Container für die großen Bilder
private var bigCon:Sprite=new Sprite;
//Öffentlich Function: Startet die Galerie
public function loadGalerie(url:String) {
addChild(bigCon);
//instanziiert den URLLoader
var loader:URLLoader=new URLLoader;
//weist die Listerner zu;
configureListeners(loader);
//instanziiert den URLRequest
var request:URLRequest=new URLRequest(url);
try {
loader.load(request);
} catch (error:Error) {
trace("Unable to load requested document.");
}
}
//Configuriert die Listener. für den XML-Aufruf
private function configureListeners(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(Event.COMPLETE,completeHandler);
dispatcher.addEventListener(Event.OPEN,openHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS,progressHandler);
dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR,securityErrorHandler);
dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS,httpStatusHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
}
//XML Geladen
private function completeHandler(event:Event):void {
var loader:URLLoader=URLLoader(event.target);
parseXML(loader.data);
}
private function openHandler(event:Event):void {
trace("openHandler: " + event);
}
private function progressHandler(event:ProgressEvent):void {
trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);
}
private function securityErrorHandler(event:SecurityErrorEvent):void {
trace("securityErrorHandler: " + event);
}
private function httpStatusHandler(event:HTTPStatusEvent):void {
trace("httpStatusHandler: " + event);
}
private function ioErrorHandler(event:IOErrorEvent):void {
trace("ioErrorHandler: " + event);
}
//verarbeitet die XML
private function parseXML(str:String):void {
myXML.ignoreWhitespace=true;
myXML=XML(str);
//durchläuft die XML (in dem Falle alles was im Knoten: grundeinstellung ist)
for each (var child:XML in myXML.children()[0].children()) {
switch (child.name().toString()) {
case "anzReihe" :
anzReihe=parseFloat(child);
break;
case "maxHoehe" :
maxHoehe=parseFloat(child);
break;
case "maxBreite" :
maxBreite=parseFloat(child);
break;
case "thumbWidth" :
thumbWidth=parseFloat(child);
break;
case "thumbHeight" :
thumbHeight=parseFloat(child);
break;
case "thBackColor" :
thBackColor=parseInt(child);
break;
case "thLineStyle" :
thLineStyle=parseInt(child);
break;
case "xPos" :
xPos=parseInt(child);
break;
case "yPos" :
yPos=parseInt(child);
break;
case "thumbsPos" :
thumbsPos=child.toString();
break;
case "thumbsAbstand" :
thumbsAbstand=parseInt(child);
break;
case "abStandBig" :
abStandBig=parseInt(child);
break;
default :
trace("Case nicht vorhanden" + child.name());
break;
}
}
ladeThumbs();
}
//Function um die Thumbs zu erstellen und zu laden
private function ladeThumbs():void {
var __mc:MovieClip=new MovieClip;
addChild(__mc);
//__mc.x=xPos;
//Durchläuft den Knoten picGalerie
for each (var child:XML in myXML.children()[1].children()) {
var target:MovieClip=new MovieClip;
target.addChild(zeichneBackGround());
target.name=child.name().toString();
__mc.addChild(target);
if (zaehler == anzReihe) {
zaehler=0;
zReihe++;
}
target.x=thumbWidth * zaehler + thumbsAbstand * zaehler;
target.y=yPos + thumbHeight * zReihe + thumbsAbstand * zReihe;
ladePics(target,child.pUrl,"thumb");
target.pUrl=child.pUrl;
target.pText=child.pText;
zaehler++;
}
//Positioniert die Thumbs, je nach Angaben in der XML
switch (thumbsPos) {
case "top" :
__mc.x=thumbWidth / 2 ;
__mc.y=thumbHeight / 2 ;
conPosX=xPos;
conPosY=__mc.height + abStandBig;
break;
case "left" :
__mc.x=thumbWidth / 2 ;
__mc.y=thumbHeight / 2 ;
conPosX=__mc.x + __mc.width + abStandBig - thumbWidth / 2;
conPosY=yPos;
break;
case "right" :
__mc.x=maxBreite+thumbWidth/2 + abStandBig;
__mc.y=thumbHeight / 2 + yPos;
conPosX=__mc.x;//- abStandBig - thumbWidth / 2;
conPosY=yPos;
break;
case "down" :
__mc.x=thumbWidth / 2 + xPos;
__mc.y=maxHoehe - abStandBig +thumbHeight;
conPosX=xPos;
conPosY=__mc.y - thumbHeight;
break;
}
//Aufruf zum ersten Bild laden.
var con=__mc.getChildAt(0);
loadBigPic(con.pUrl);
}
private function ladePics(sprite:Sprite,url:String,art:String):void {
var loader:Loader=new Loader;
var request:URLRequest=new URLRequest(url);
loader.load(request);
sprite.addChild(loader);
switch (art) {
case "thumb" :
loader.contentLoaderInfo.addEventListener(Event.INIT,initHandler);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
break;
case "big" :
loader.contentLoaderInfo.addEventListener(Event.INIT,initBigPicHandler);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,imgLoaded);
//sprite.x = conPosition;
bigCon.addChildAt(sprite,0);
break;
}
}
private function _onRelease(event:MouseEvent):void {
loadBigPic(event.target.parent.pUrl);
}
private function _onRollOver(event:MouseEvent):void {
var target:DisplayObject=event.target.parent.parent.getChildByName(event.target.parent.name);
var ebene:uint=event.target.parent.parent.getChildIndex(target);
event.target.parent.parent.swapChildrenAt(ebene,event.target.parent.parent.numChildren - 1);
var myXTween:Tween=new Tween(event.target.parent,"scaleX",Elastic.easeOut,1,1.2,1,true);
var myYTween:Tween=new Tween(event.target.parent,"scaleY",Elastic.easeOut,1,1.2,1,true);
}
private function _onRollOut(event:MouseEvent):void {
var myXTween:Tween=new Tween(event.target.parent,"scaleX",Elastic.easeOut,event.target.parent.scaleX,1,1,true);
var myYTween:Tween=new Tween(event.target.parent,"scaleY",Elastic.easeOut,event.target.parent.scaleY,1,1,true);
}
private function loadBigPic(str:String):void {
var container:Sprite=new Sprite;
ladePics(container,str,"big");
}
private function initBigPicHandler(event:Event):void {
var loader:Loader=Loader(event.target.loader);
var info:LoaderInfo=LoaderInfo(loader.contentLoaderInfo);
switch (thumbsPos) {
case "top" :
loader.x=(maxBreite - loader.content.width)/2;
loader.y=conPosY ;
break;
case "left" :
loader.x=conPosX + (maxBreite - loader.content.width)/2;
loader.y=conPosY;
break;
case "right" :
loader.x=(maxBreite - loader.content.width)/2;
loader.y=conPosY;
break;
case "down" :
loader.x=(maxBreite - loader.content.width)/2;
//loader.y=conPosY-loader.content.height;
break;
}
}
private function kill(e:TweenEvent):void {
for(var i:uint = 1; i < bigCon.numChildren;i++){;
bigCon.removeChildAt(i);
}
}
private function initHandler(event:Event):void {
var loader:Loader=Loader(event.target.loader);
var info:LoaderInfo=LoaderInfo(loader.contentLoaderInfo);
loader.content.scaleX=loader.content.scaleY=skaliereThumbs(loader.content.width,loader.content.height);
loader.content.x=position(loader.content.width,thumbWidth);
loader.content.y=position(loader.content.height,thumbHeight);
loader.addEventListener(MouseEvent.MOUSE_UP,_onRelease);
loader.addEventListener(MouseEvent.MOUSE_OVER,_onRollOver);
loader.addEventListener(MouseEvent.MOUSE_OUT,_onRollOut);
loader.x=- thumbWidth / 2;
loader.y=- thumbHeight / 2;
}
private function skaliereThumbs(w:Number,h:Number) {
var max=Math.max(w,h);
var erg=Math.floor(100 / max * thumbWidth - 1);
return erg / 100;
}
private function position(ist:Number,target:Number) {
return target / 2 - ist / 2;
}
private function picErrorHandler(event:IOErrorEvent):void {
trace("ioErrorHandler: " + event);
}
private function imgLoaded(event:Event):void {
var myYTween:Tween=new Tween(event.target.content,"alpha",Strong.easeOut,0,1,2,true);
if (bigCon.numChildren > 1) {
var myTween:Tween=new Tween(bigCon.getChildAt(1),"alpha",Strong.easeOut,1,0,2,true);
myTween.addEventListener(TweenEvent.MOTION_FINISH,kill);
}
}
private function zeichneBackGround():Shape {
var thumb:Shape=new Shape;
thumb.graphics.beginFill(thBackColor);
thumb.graphics.lineStyle(1,thLineStyle);
thumb.graphics.drawRect(0,0,thumbWidth,thumbHeight);
thumb.graphics.endFill();
thumb.x=- thumb.width / 2;
thumb.y=- thumb.height / 2;
return thumb;
}
}
}
menueExample.as
und die Class um die ganze Geschichte zu StartenPHP-Code:package {
import loadGalerie;
import flash.display.*;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.events.Event;
public class menueExample extends MovieClip {
private var __xml:XML;
private var menueMc:MovieClip;
private static var abStand:Number;
private static var aktivBtn;
private static var btnArray:Array = new Array();
private var galerie:loadGalerie;
private static var con:MovieClip;
public function AttachMovie(str:String) {
var myMC:MovieClip = new point_mc;
myMC.name = str;
myMC.inhalt_txt.text = __xml.titel;
myMC.x = setPosition(myMC.width);
myMC.target = __xml.func.toString();
myMC.xmlUrl = __xml.xmlURL;
btnArray.push(myMC);
addChild(myMC);
registerListener(myMC);
}
private function setPosition(w:Number):Number {
if (isNaN(abStand)) {
abStand = 0;
} else {
abStand+= w+2;
}
return abStand;
}
public function lContainer(__mc:MovieClip) {
con = __mc;
}
private function registerListener(__mc:MovieClip):void {
__mc.mouseChildren = false;
//__mc.addEventListener(MouseEvent.DOUBLE_CLICK, clickHandler);
__mc.addEventListener(MouseEvent.MOUSE_OUT, outHandler);
__mc.addEventListener(MouseEvent.MOUSE_OVER, overHandler);
switch (__mc.target) {
case "ladeText" :
__mc.addEventListener(MouseEvent.CLICK, clickHandler);
break;
case "ladeFunc" :
__mc.addEventListener(MouseEvent.CLICK, clickHandler);
break;
case "ladeGalerie" :
trace("ladeGalerie switch");
__mc.addEventListener(MouseEvent.CLICK, galerieListener);
break;
case "ladeSonstige" :
__mc.addEventListener(MouseEvent.CLICK, clickHandler);
break;
}
//addEventListener(MouseEvent.MOUSE_UP, f);
//addEventListener(MouseEvent.MOUSE_UP, clickHandler);
//addEventListener(MouseEvent.MOUSE_WHEEL, clickHandler);
}
private function galerieListener(event:MouseEvent):void {
killListener(event.target);
galerie = new loadGalerie(event.target.xmlUrl);
con.addChild(galerie);
galerie.y = 30;
}
private function killListener(__mc:Object):void {
killContainer();
__mc.removeEventListener(MouseEvent.DOUBLE_CLICK, clickHandler);
//addEventListener(MouseEvent.MOUSE_DOWN, clickHandler);
__mc.removeEventListener(MouseEvent.MOUSE_OUT, outHandler);
__mc.removeEventListener(MouseEvent.MOUSE_OVER, overHandler);
__mc.removeEventListener(MouseEvent.CLICK, clickHandler);
switch (__xml.func.toString()) {
case "ladeText" :
break;
case "ladeFunc" :
break;
case "ladeGalerie" :
__mc.removeEventListener(MouseEvent.CLICK, galerieListener);
break;
case "ladeSonstige" :
break;
}
for (var i:uint = 0; i < btnArray.length; i++) {
if (__mc.name != btnArray[i].name) {
if (btnArray[i].currentFrame > 1) {
registerListener(btnArray[i]);
btnArray[i].addEventListener(Event.ENTER_FRAME, mcRewind);
}
}
}
}
private function killContainer():void {
var child:DisplayObject;
for (var i:uint=0; i < con.numChildren; i++) {
child = con.getChildAt(i);
if (con.getChildAt(i) is DisplayObjectContainer) {
con.removeChild(DisplayObjectContainer(child));
}
}
}
private function clickHandler(event:MouseEvent):void {
killListener(event.target);
}
private function outHandler(event:MouseEvent):void {
event.target.addEventListener(Event.ENTER_FRAME, mcRewind);
}
private function overHandler(event:MouseEvent):void {
event.target.removeEventListener(Event.ENTER_FRAME, mcRewind);
event.target.play();
}
private function mcRewind(event:Event):void {
event.target.prevFrame();
//var str:String = mcRewind
if (currentFrame == 1) {
event.target.removeEventListener(Event.ENTER_FRAME, mcRewind);
}
}
private function funcUebergabe(func:Function) {
doubleClickEnabled = true;
addEventListener(MouseEvent.MOUSE_UP, __xml.func);
}
private function getXML():XML {
return __xml;
}
public function setXML(xml:XML):void {
__xml = xml;
}
}
}
startClass.as
PHP-Code:package {
import menueExample;
import flash.display.LoaderInfo;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.*;
import flash.net.*;
import flash.xml.*;
import flash.display.MovieClip;
public class startClass extends menueExample {
private var __name:String;
private var myXML:XML = new XML();
public var container:MovieClip = new MovieClip();
public function startClass() {
lContainer(container)
addChild(container)
container.x = 10;
loadGalerie("xml/menue.xml",ladeMenueListener);
}
private function loadGalerie(url:String, func:Function):void {
//addChild(bigCon);
//instanziiert den URLLoader
var loader:URLLoader = new URLLoader();
//weist die Listerner zu;
func(loader);
//instanziiert den URLRequest
var request:URLRequest = new URLRequest(url);
try {
loader.load(request);
} catch (error:Error) {
trace("Unable to load requested document.");
}
}
private function ladeMenueListener(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
dispatcher.addEventListener(Event.OPEN, openHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
}
//XML Geladen
private function completeHandler(event:Event):void {
var loader:URLLoader = URLLoader(event.target);
ladeMenue(loader.data);
}
private function openHandler(event:Event):void {
trace("openHandler: " + event);
}
private function progressHandler(event:ProgressEvent):void {
trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);
}
private function securityErrorHandler(event:SecurityErrorEvent):void {
trace("securityErrorHandler: " + event);
}
private function httpStatusHandler(event:HTTPStatusEvent):void {
trace("httpStatusHandler: " + event);
}
private function ioErrorHandler(event:IOErrorEvent):void {
trace("ioErrorHandler: " + event);
}
private function ladeMenue(xmlStr:String):void {
myXML.ignoreWhitespace = true;
myXML.ignoreComments = false;
myXML = XML(xmlStr);
for (var i = 0; i<myXML.children().length(); i++) {
__name = i.toString() +"_class";
var __mc:menueExample = new menueExample();
__mc.setXML (myXML.children()[i]);
addChild(__mc);
__mc.AttachMovie(__name);
}
}
}
}


LinkBack URL
About LinkBacks

Zitieren