und mir mein ca 40 zeiliges script (ohne kommentaare) so umzubauen und zu erklären
PHP-Code:
//speichert den zuletzt aufderufenen index
var lastIndex;
//Variable um den MC anLaden zu steuern
var ladevorgang;
//Array um die referenz zu den strichMC instanzen auf der bühne dynamisch zu übergeben
strichName = ["strich1Q1","strich2Q1","strich1Q2","strich2Q2","strich1Q3","strich2Q3","strich1Q4","strich2Q4"]
//Array um die referenz zu den quadratMC instanzen auf der bühne dynamisch zu übergeben
quadratName = ["quadrat1","quadrat2","quadrat3","quadrat4"]
// Array um für jedes geladene Bild (jeder button lädt 4 bilder) eine leeren MC mit namen zu erstellen
// für jeden Button benötige ich noch einen leeren MC watcher um in ihm einen onEnterFrame zu installieren
// der die größe des quadrat´s mit der des containers vergleicht
//ich brauch so viele watcher wie ich butten habe
containerName = ["watcher0", "container1", "container2", "container3", "container4",
"watcher1", "container11", "container12", "container13", "container14",
"watcher3", "container21", "container22", "container23", "container24",
"watcher4", "container31", "container32", "container33", "container34"];
//MovieClip.prototype der die leeren MC´s erzeugt( wenn sie nicht schon vorhanden sind) und dann swf dateien in die container lädt
//C1zielX erklärung zielkoordinaten der quadrate die getweent werden
//C1 steht für clip1 zielX die x koordinate des ziel x
//die X/Y koordinaten müssen für alle zu tweenenden quadrate vorhanden sein
//die zielkoordinaten werden unten nur einem weiteren MovieClip.prototypen ( tween) übergeben
MovieClip.prototype.laden = function(index, clip1, clip2, clip3, clip4,C1zielX, C1zielY,C2zielX,C2zielY,C3zielX,C3zielY,C4zielX,C4zielY) {
//die container die beim vorrigen ausführen des prototypen sichtbar wurden auf alpha = 0 setzen
_root[containerName[lastIndex+1]]._alpha = 0;
_root[containerName[lastIndex+2]]._alpha = 0;
_root[containerName[lastIndex+3]]._alpha = 0;
_root[containerName[lastIndex+4]]._alpha = 0;
//speichert den zuletzt aufgerufenen index damit beim erneuten ausführen des prototypen
//die container die zuvor sichtbar wurden wieder unsichtbar zu werden
lastIndex = index;
//solange der container _root[containerName[index]] noch nicht besteht also undefiniert ist
//erstelle neuen container mit dem namen aus dem Array containerName
if (_root[containerName[index]] == undefined) {
//trace("ich bin noch nicht Da ");
//Die MC´s müssen alle auf verschiedenen Layern liegen
// da immer nur 1 MC auf einen Layer platz hat
_root.createEmptyMovieClip([containerName[index]], index+10);
_root.createEmptyMovieClip([containerName[index+1]], index+1);
_root.createEmptyMovieClip([containerName[index+2]], index+2);
_root.createEmptyMovieClip([containerName[index+3]], index+3);
_root.createEmptyMovieClip([containerName[index+4]], index+4);
//lader die swf dateien (deren name mit clip1/2/3/4 übergeben werden)
//in die container
_root[containerName[index+1]].loadMovie(clip1);
_root[containerName[index+2]].loadMovie(clip2);
_root[containerName[index+3]].loadMovie(clip3);
_root[containerName[index+4]].loadMovie(clip4);
}
//trace("---------------------ich bin Da ");
// setzt die gerade erzeugten container auf alpha = 0
//damit sie beim darauffolgenden formtween noch nicht zu sehen sind
_root[containerName[index+1]]._alpha = 0;
_root[containerName[index+2]]._alpha = 0;
_root[containerName[index+3]]._alpha = 0;
_root[containerName[index+4]]._alpha = 0;
//mit _root[containerName[index]].onEnterFrame wird ein event im jeweiligen MC watcher impliziert
//diesen MC watcher brauch ich um überwachen zu können wie viele Bytes geladen werden müssen ( BytsTotal)
//wie viele Bytes bereits geladen wurden
// und um anschließend wenn alles geladen ist den nächsten prototypen (tween) zu starten
_root[containerName[index]].onEnterFrame = function() {
//variable die die anzahl der Bytes der dateinen die geladen werden speichert
this.BytesTotal = _root[containerName[index+4]].getBytesTotal(Clip4)+_root[containerName[index+1]].getBytesTotal(Clip1)+
_root[containerName[index+2]].getBytesTotal(Clip2)+_root[containerName[index+3]].getBytesTotal(Clip3);
//variable die die bis zu diesem zeitpunkt geladene Beyte speichert
this.BytesLoadet = _root[containerName[index+1]].getBytesLoaded(Clip1)+_root[containerName[index+2]].getBytesLoaded(Clip2)+
_root[containerName[index+3]].getBytesLoaded(Clip3)+_root[containerName[index+4]].getBytesLoaded(Clip4);
// trace("Total "+ this.BytesTotal)
//trace("geladen"+ this.BytesLoadet)
//sollang noch nicht alle Bytes geladen sind setze die Variable ladevogang auf den string "amLaden"
//damit der MC amLaden abgespielt wird
if (this.BytesLoadet<this.BytesTotal) {
ladevorgang = "amLaden";
}
//wenn alle bytes geladen sind setze die Variable ladevorgang auf den string "ende"
// um den Mc amLaden zu stopen
//anschließend starte den MovieClip.prototypen tween
if (this.BytesLoadet == this.BytesTotal) {
ladevorgang = "ende";
//starte den tween und übergebe die zielkoordinaten dem tween
tween(index+1,0,C1zielX,C1zielY);
tween(index+2,1,C2zielX,C2zielY);
tween(index+3,2,C3zielX,C3zielY);
tween(index+4,3,C4zielX,C4zielY);
delete this.onEnterFrame;
}
};
};
// MovieClip.Prototype tween hat die aufgabe die Quadrate zu tweenen und sie auf die größe der container
//(die die swf dateien enthalten) zu scalieren
// und anschließend die container sichtbar zu machen
//index ist der index der Arrays [containerName]
//Qindex ist der index des Arrays [QuadratName]
// zielX zielY sind die zielkoordinaten für den tween
MovieClip.prototype.tween = function(index,Qindex,zielX,zielY){
_root[containerName[index]].onEnterFrame = function(){
//trace("toll 1"+ [quadratName[Qindex]]);
// vergleich ob der aktuelle container eine ungleiche breite oder höhe mit dem quadrat besitzt
// (_root[quadratName[Qindex]] also quadrat mit dem name aus dem Array quadratName)
if (Math.round(this._width) != Math.round(_root[quadratName[Qindex]]._width) ||
Math.round(this._height) != Math.round(_root[quadratName[Qindex]]._height)) {
//Formtween anpassen des quadrates auf die größe der containers
_root[quadratName[Qindex]]._width += (this._width-_root[quadratName[Qindex]]._width)/5;
_root[quadratName[Qindex]]._height += (this._height-_root[quadratName[Qindex]]._height)/5;
}else{
// setze den container auf die x/y koordinaten den angesprochenen quadrat´s
this._x = _root[quadratName[Qindex]]._x - (_root[quadratName[Qindex]]._width / 2);
this._y = _root[quadratName[Qindex]]._y - (_root[quadratName[Qindex]]._height / 2);
// den container sichtbar werden lassen
this._alpha += 5;
if(this._alpha > 100){
// wenn der container sichtbar ist also auch auf die größe scallier getweent
//lösche diesen onEnterFrame und den onEnterFrame der fürs tweenen verantwortlich war
delete _root[quadratName[Qindex]].onEnterFrame
delete this.onEnterFrame;
}
}
}
//setze den wert der argumentes zielX auf this.zielX um den wert nur für diesen aufruf der prototypen verfügbar zu machen
this.zielX = zielX;
this.zielY = zielY;
// tweenen des quadrats
_root[quadratName[Qindex]].onEnterFrame = function (){
this._x += (zielX - this._x)/5;
this._y += (zielY - this._y)/5;
// positionieren des oberbe strich´s
//die quadrate haben den Index 0,1,2,3 die sticher aber 0,1,2,3,4,5,6,7
// also errechne ich mir den index der striche aus dem index der quadrate (Qindex*2)
_root[strichName[Qindex*2]]._x = this._x;
_root[strichName[Qindex*2]]._y = this._y + (this._height/2);
// positionieren des untern strich´s
_root[strichName[Qindex*2+1]]._x = this._x;
_root[strichName[Qindex*2+1]]._y = this._y - (this._height/2);
}
}
/////////////----------- Buttons----------------/////
BTN1.onRelease = function() {
laden(0, "black1.swf", "black2.swf", "black3.swf", "kolumbariumFilm.swf",0,10,33,200,66,200,99,100);
};
BTN2.onRelease = function() {
laden(5, "black8.swf", "black6.swf", "black7.swf", "black8.swf",100,10,133,200,166,350,199,200);
};
BTN3.onRelease = function() {
laden(10, "black3.swf", "black1.swf", "kolumbariumFilm.swf","black8.swf" ,200,10,233,200,266,400,299,100);
};
BTN4.onRelease = function() {
laden(15, "kolumbariumFilm.swf", "black2.swf", "black3.swf", "kolumbariumFilm.swf",300,10,333,200,366,300,399,100);
};