Hi Flasher, hab mir die Tage eine Fla-Datei Wechsler.fla (32.50 KB) (Slideshow mit Fade-In und Fade-Out) aus dem Netz gezogen, läuft super. Mein Problem, ich bekomme diesen Zufallsgenerator nicht raus, so dass die Daten in einer festen (entsprechend der Bildnummern) Reihenfolge in einer Endlosschleife ablaufen. Wäre super, wenn mich einer unterstützen kann.
Beste Grüße und schon mal 1000-DankAlles ist gut, solange du wild bist!
MEinst Du in Ebene 1, Bild 1 ab Zeile 18 (function weiter)? Hat das nicht zur Folge, dass ich einen Button benutzen muss um das nächste Bild zu sehen? Ziel ist, das die Animation alleine in einer Endlosschleife läuft und ich durch tauschen der Bilder in Ordner "bilder" diese dann beeinflussen kann.Alles ist gut, solange du wild bist!
Beiträge: 1769 Wohnort: Laimbach 6 1/2 Registriert: Nov 2002
Bisschen anstrengend an dem Teil herumzuschrauben, deswegen hier eine bisschen Modernere Version,
kannst auch besser über XML bearbeiten.
Musst nicht nehmen, kannst aber :-)
import com.caurina.transitions.*;//Tweenklase, zum freinen Gebrauch, Download_Link http://code.google.com/p/tweener/.
var myBigPictArray:Array = [];// Bildernamen als Strings gespeichert.
var btnContainerArray:Array = [];// hier werden die mitlaufenden Buttons gespeichert.
var bigContainerArray:Array = [];// hier werden die Container für die Bilder gespeichert.
var bilderOrdner:String = null;// String für den Ordner der Bilder.
var timeline:MovieClip = this;// hier wird die Maintimeline gespeichert, bei setInterval sehr nützlich, und wenn das Ding nicht auf "_root" läuft.
var firstLoad:Boolean = false;// wenn die auf true gesetzt wird (wenn erstes Bild geladen), fängt die DiaShow an.
var fadeInMc:MovieClip = null;// hier wird der gerade eingefadete MC gespeichert, zum wieder ausfaden "function outFade()".
var btnMemory:MovieClip = null;// hier wird die gerade angezeigte, Nummer gespeichert, wird auch im "outFade" gebraucht.
var loadcount:Number = 0;// counter für Loader.
var diacount:Number = 0;// counter für DiaShow.
var inter:Number = null;// der Speicher für das "setInterval --> inter".
//********** hier werden die Nummer generiert **********//
function load_btn() {
for (i=0; i<myBigPictArray.length; i++) {
var tlb:MovieClip = timeline.attachMovie("Button_Base","thumb_btn"+i,timeline.getNextHighestDepth());
btnContainerArray.push(tlb);
tlb.stop();
tlb._x = i*(tlb._width)+Stage.width-(tlb._width*myBigPictArray.length);
tlb._y = 20;
tlb.nr_txt.text = i+1;
}
create_container();// --> selbsterklärend
}
//********** hier werden die Container fü die Bilder generiert, für jedes Bilde einer **********//
function create_container() {
for (i=0; i<myBigPictArray.length; i++) {
bigContainerArray.push(timeline.createEmptyMovieClip("big_container"+i,timeline.getNextHighestDepth()));
}
load_Bilder();// --> selbsterklärend
}
//********** Loader-Funktion, die Bilder "Bild für Bild" lädt, unabhängig von der DiaShow **********//
function load_Bilder():Void {
var wo:MovieClip = bigContainerArray[loadcount];
wo._alpha = 0;
var was:String = bilderOrdner+myBigPictArray[loadcount];
var bild_mcl = new MovieClipLoader();
ObjListener = new Object();
bild_mcl.addListener(ObjListener);
bild_mcl.loadClip(was,wo);
var interval:Object = new Object();
interval.id = setInterval(checkProgress, 30, bild_mcl, wo, interval);
function checkProgress(mcLoader:MovieClipLoader, image:MovieClip, interval:Object):Void {
var progress:Object = mcLoader.getProgress(image);
if (progress.bytesLoaded == progress.bytesTotal) {
clearInterval(interval.id);
wo._x = int((Stage.width-wo._width)/2);
wo._y = int((Stage.height-wo._height)/2);
if (firstLoad == false) {// wenn das erste Bild geladen ist, kann die DiaShow gestartet werden, der Loader läuft weiter
inFade();// --> selbsterklärend
firstLoad = true;
}
if (loadcount<myBigPictArray.length-1) {
loadcount++;
load_Bilder();// Rekursives laden, heisst die Funktion ruft sich selber, solange loadcount kleiner wie BildArray-1 ist.
}
}
}
}
//********** Funktion zum einfaden der Bilder **********//
function inFade():Void {
clearInterval(inter);// kickt interval --> "inter"
if(bigContainerArray[diacount] != undefined){// Sicherheits-Check, ob das Bild auch wirklich schon im Array ist.
btnContainerArray[diacount].gotoAndStop(2);// Nummern_mc wird auf den zweiten Frame geschickt
btnMemory = btnContainerArray[diacount];// Nummern_mc wird gespeichert
Tweener.addTween(bigContainerArray[diacount],{_alpha:100, time:8, transition:easeInQuad, onComplete:function () {
fadeInMc = bigContainerArray[diacount];// der gerade eingefadete Mc wird gespeichert
inter = setInterval(outFade, 5000);// wenn eingedaet komplett, outFade wird gestartet
}});
}else{
fileCecker();// aufruf des File-Checkers, wenn ein Position im BilderArray noch leer ist!
}
}
//********** Funktion zum ausfaden der Bilder **********//
function outFade() {
clearInterval(inter);// kickt interval --> "inter"
Tweener.addTween(fadeInMc,{_alpha:0, time:4, transition:easeOutQuad, onComplete:function () {
btnMemory.gotoAndStop(1);// wenn fertig, gespeicherter Nummer_mc wird wieder auf Frame 1 geschickt.
inFade();// inFade wird wieder gestartet
}});
diacount<myBigPictArray.length-1 ? (diacount++) : diacount=0;// setzt diacount wieder auf 0, wenn die DiaShow durch ist
}
//********** Funktion die gerufen wird, wenn versucht wird ein Bild zu faden, das noch nicht gespeichert ist **********//
function fileCecker(){
var tfc:MovieClip = timeline.createEmptyMovieClip("fileCheckMc",timeline.getNextHighestDepth());
tfc.onEnterFrame = function(){// läuft solange wie ein Bild im Array gespeicert ist
if(bigContainerArray[diacount] != undefined){
inFade();// startet "inFade" erneut, wenn der Content am Start ist.
delete this.onEnterFrame;
}
}
}
function suck_xml() {
myXML = new XML();
myXML.ignoreWhite = true;
myXML.onLoad = function(aloha:Boolean) {
if (aloha) {
bilderOrdner = this.firstChild.childNodes[0].childNodes[0].attributes.ordner; // erstellt den String für Bilder-Ordner
for (var i:Number = 0; i<this.firstChild.childNodes[1].childNodes.length; i++) {
myBigPictArray.push(this.firstChild.childNodes[1].childNodes[i].attributes.big);// erstellt die Strings und speichert die im Array
}
load_btn();//startet nummer_mc generieren
}
};
myXML.load('gallery_xml_as2.xml');
}
suck_xml();// Startet den Anfang der ganzen show
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Beispiel_XML
/*
<?xml version="1.0" encoding="utf-8"?>
<pictures>
<database>
<data ordner = "Bilder/"></data>
</database>
<picbase>
<pict big = "Nasa_10.jpg"></pict>
<pict big = "Nasa_11.jpg"></pict>
<pict big = "Nasa_12.jpg"></pict>
<pict big = "Nasa_13.jpg"></pict>
<pict big = "Nasa_14.jpg"></pict>
<pict big = "Nasa_15.jpg"></pict>
<pict big = "Nasa_16.jpg"></pict>
<pict big = "Nasa_17.jpg"></pict>
<pict big = "Nasa_18.jpg"></pict>
<pict big = "Nasa_19.jpg"></pict>
</picbase>
</pictures>
*/
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake! "Wer tanzen will, muss erst gehen lernen"
Beiträge: 108 Wohnort: Hannover Registriert: Jan 2010
Hab jetzt einfach nur ein paar Sachen geändert, nicht ideal, aber so läufts. Würde es echt nochmal neu aufbauen, aber so kannst Du vergleichen wo der Hase begraben liegt.^^
//Bildloader initialisieren
var loader:MovieClipLoader = new MovieClipLoader();
loader.addListener(this);
var g:Number = 0;
function onLoadProgress(_mc:MovieClip, loaded:Number, total:Number) {
var amount:Number = Math.round(loaded/total*100);
if (loaded>=total) {
g++;
unloadMovie(_mc);
if (g>=bildanzahl) {
gotoAndStop(3);
}
}
}
this.onEnterFrame = function() {
var amount:Number = this.getBytesLoaded()/this.getBytesTotal()*100;
if (amount>=100 && amount>20) {
bilder = new Array();
for (i=0; i<=bildanzahl; i++) {
zufallszahl = (bildanzahl);//das is der Zufallsgenerator
if (zufallszahl == "0") {
zufallszahl = "1";
}