Gallerie v.2 Prob. jetzt mit XML

Denniz

Erfahrenes Mitglied
Hi Leute,

ich bin mal wieder meine Galerie am verfeinern.
Nachdem meine alte Gallerie dank der hilfe vom Tobias wunderbar funktionierte dachte ich
mir das ich diese weiter ausbaue.
Voher war es so das ich die Vorschaubilder alle im Flash Film hatte und die großen Bilder dann bei Bedarf in einem container per loadMovie geladen wurde.
Jetzt versuche ich das ganze mit XML.
Ist das erste mal das ich was mit XML mache.
Meine XML ist so aufgebaut:
PHP:
<?xml version="1.0" encoding="utf-8" ?>
<bilder>
<bild pic_pfad_klein="_images/tel1.jpg" pic_pfad_gross="_images/tel1big.jpg" pic_id="1" pic_text="das ist bild 1" />
<bild pic_pfad_klein="_images/tel2.jpg" pic_pfad_gross="_images/tel2big.jpg" pic_id="2" pic_text="das ist bild 2" />
<bild pic_pfad_klein="_images/tel3.jpg" pic_pfad_gross="_images/tel3big.jpg" pic_id="3" pic_text="das ist bild 3" />
...usw...
</bilder>

Mein AS:
PHP:
var target = this;
XMLdata = new XML();
XMLdata.load("pictures.xml");
XMLdata.ignoreWhite = true;
XMLdata.onLoad = function() {
	var anzahl = XMLdata.firstChild.childNodes.length;
	var XMLdata_picsURL_small:Array = new Array();
	var XMLdata_picsURL_big:Array = new Array();
	for (var i = 0; i<anzahl; i++) {
		XMLdata_picsURL_small[i] = XMLdata.firstChild.childNodes[i].attributes.pic_pfad_klein;
		var containerPic:MovieClip = target.createEmptyMovieClip("containerPic"+i, target.getNextHighestDepth());
		containerPic.loadMovie(XMLdata_picsURL_small[i]);
		containerPic._y = 200;
		containerPic._x = 100*i;
		XMLdata_picsURL_big[i] = XMLdata.firstChild.childNodes[i].attributes.pic_pfad_gross;
	}
};
MovieClip.prototype.onRelease = function() {
	trace(this);
};

Ok, die vorschaubilder werden reingeladen und lassen sich anklicken aber was muß ich jetzt machen das wenn ich auf ein Bild klicke das mir das Pic auf der Bühne demenstprechend in groß geladen wird?
Die Pfadangabe der großen Bilder ist ja schon im array XMLdata_picsURL_big gespeichert
aber wie komm ich da dran weil mein prototype liegt ja außerhalb und wie müßte
die funktion dafür aufgebaut sein?
Oder bin ich da auf dem Holzweg mit der Idee?

Hab es hier hochgeladen
Beste Grüße
-denniz
 
Hi,

lade die Vorschaubilder nicht direkt in die neu erstellten Container, sondern verwende "Subcontainer" dafür. Dann kannst Du den eigentlichen Containern Eigenschaften mitgeben, wie z.B. den Pfad zum jeweiligen großen Bild, Mausereignisse usw. Das sähe dann in etwa so aus:
Code:
XMLdata.onLoad = function() {
    var anzahl = XMLdata.firstChild.childNodes.length;
    var XMLdata_picsURL_small:Array = new Array();
    var XMLdata_picsURL_big:Array = new Array();
    for (var i = 0; i<anzahl; i++) {
        XMLdata_picsURL_small[i] = XMLdata.firstChild.childNodes[i].attributes.pic_pfad_klein;
        var containerPic:MovieClip = target.createEmptyMovieClip("containerPic"+i, target.getNextHighestDepth());
        var img = containerPic.createEmptyMovieClip("img", 1);
        img.loadMovie(XMLdata_picsURL_small[i]);
        containerPic.fullimg = XMLdata.firstChild.childNodes[i].attributes.pic_pfad_gross;
        containerPic.onRelease = function() {
                zeigeVollbild(this.fullimg);
        }
        containerPic._y = 200;
        containerPic._x = 100*i;
    }
}

Gruß
.
 
ok,danke, die bilder in groß werden jetzt in einen container geladen wenn man zuvor eines der Vorschaupics angeklickt hat.

Hab da jetzt wieder ein neues Problem.
Ich hätte gerne ein Farbwandeleffekt für die großen Bildern wenn man ein anderes Bild in den container läd. Der Farbwandel soll so aussehen das das Bild zuerst weiß ist und per onEnterFrame nach und nach die normale Farbe annimmt.
Hab mir bislang dieses Skript mit dem color Object und colortransform gebaut.Es wird auf my_mc ausgeführt in dem meine Bitmap ist.
PHP:
var count = 255;
var my_color:Color = new Color(my_mc);
var myColorTransform:Object = new Object();
my_color.setTransform(myColorTransform);
my_mc.onEnterFrame = function() {
	if (count>0) {
		count -= 15;
		myColorTransform.rb = count;
		myColorTransform.gb = count;
		myColorTransform.bb = count;
		my_color.setTransform(myColorTransform);
	} else {
		delete this.onEnterFrame;
	}
};

Das ding klapt auch.
Jetzt zu meinem Problem. Es klappt nicht wenn die Grafik in einem leeren container geladen wird. Obwohl ich die colortransform animation für diesen container MC bestimmt habe.
Hier meine komplette Syntax:
PHP:
//--------------------XML---------------------//
var target = this;
XMLdata = new XML();
XMLdata.load("pictures.xml");
XMLdata.ignoreWhite = true;
XMLdata.onLoad = function() {
	var anzahl = XMLdata.firstChild.childNodes.length;
	var XMLdata_picsURL_small:Array = new Array();
	for (var i = 0; i<anzahl; i++) {
		XMLdata_picsURL_small[i] = XMLdata.firstChild.childNodes[i].attributes.pic_pfad_klein;
		var containerPic:MovieClip = target.createEmptyMovieClip("containerPic"+i, target.getNextHighestDepth());
		var img = containerPic.createEmptyMovieClip("img", 1);
		img.loadMovie(XMLdata_picsURL_small[i]);
		containerPic.fullimg = XMLdata.firstChild.childNodes[i].attributes.pic_pfad_gross;
		containerPic.onRelease = function() {
			trace(this.fullimg);
			zeigeVollbild(this.fullimg);
		};
		containerPic._y = 200;
		containerPic._x = 100*i;
	}
};
//---------------colortransform--------------//
var count = 255;
var my_color:Color = new Color(container);
var myColorTransform:Object = new Object();
my_color.setTransform(myColorTransform);
function animation() {
	container.onEnterFrame = function() {
		if (count>0) {
			count -= 15;
			myColorTransform.rb = count;
			myColorTransform.gb = count;
			myColorTransform.bb = count;
			my_color.setTransform(myColorTransform);
		} else {
			count = 255;
			delete this.onEnterFrame;
		}
	};
}
//----------function zum laden der pics------------//
function zeigeVollbild(mypic) {
	animation();
	container.loadMovie(mypic);
}

Ich habe mal die FLA für den Farbwechsel sowie das gesamte Skript hochgeladen.
Hoffe du kannst mir bei dem Problem helfen so das der Color effekt auch bei den geladenen Bildern funktioniert. Ich find darauf keine Antwort.
Beste Grüße
 
Hi,

damit:
Code:
function zeigeVollbild(mypic) {
    animation();
    container.loadMovie(mypic);
}
wird der MC "container" komplett ersetzt und somit sowohl die Referenz im Color-Objekt als auch Deine onEnterFrame-Methode.

Es ist das selbe Prinzip wie bei Deinem ersten Problem: Du musst in dem Container noch einen weiteren leeren MC erstellen, in den Du das eigentliche Bild lädst. Damit bleibt der "container" und Deine Animation unbeeinflusst.

Gruß
.
 
Zurück