Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14-09-2004, 13:11   #1 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Dynamisch geladene Bilder zufällig wechseln

Hi,

ich lade aus MySQL via PHP mit 'nem LoadVars Pfade zu Bildern.
Diese lasse ich dann in einer ForSchleife alle übereinander legen und möchte diese danach per Zufall wechseln lassen.

Irgendwie haut das nicht so hin… _visible… oder swapDepths() dachte ich nutzen zu können…

Vielleicht ist mein Ansatz aber auch ganz verkehrt. Hat jemand Vorschläge?

Und mal nebenbei… es werden 40 Bilder geladen… können auch mehr werden… wie baue ich denn einen gesamten Preloader für diese Bilder? Soll quasi die Zeit, bis die 40 Bilder da sind, überbrückt werden.

Aber ok… hier nun mein Ansatz… zum Testen hab ich die Bilder ein wenig nach _x verschoben.

PHP-Code:
//Actionscript 1.0
MovieClip.prototype.randomMovie=function()
    {
    var 
movie=new LoadVars();
    
movie.load('movie.php');
    
movie.onLoad=function()
        {
        
_global.switchThrough=function()
            {
            
rand1=Math.random(_global.repeats);
            
rand2=Math.random(_global.repeats);
            
_root['container_'+rand1].swapDepths(_root['container_'+rand2]);
            }
        for(var 
i=0;i<=this.repeats;i++)
            {
            if(
i<this.repeats)
                {
                var 
image=this['image_'+i];
                var 
container=_root.createEmptyMovieClip('container_'+i,i+1);
                
container.loadMovie(image);
                
container._x=20+(i*10);
                }
            else
                {
                
_global.repeats=this.repeats;
                
_global.switchThroughInt=setInterval(_global.switchThrough500);
                }            
            }
        }
    }
this.randomMovie(); 
Liebe Grüße

Yves
  Mit Zitat antworten
Alt 14-09-2004, 13:31   #2 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Hi Yves,

zwar noch nicht die große Lösung, aber das kann schon mal nicht gehen:
ActionScript:
  1. rand1=Math.random(_global.repeats)
Das müsste so heißen:
ActionScript:
  1. rand1=Math.floor(Math.random() * _global.repeats);

Ansonsten hat Freund RustyCake letztens mal einen preloader für mehrere Bilder gebastelt, vielleichst suchst mal danach... grad wenig Zeit...

Grüße!
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 14-09-2004, 13:41   #3 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hi Tom,

Zitat:
Zitat von sonar
zwar noch nicht die große Lösung, aber das kann schon mal nicht gehen:
ActionScript:
  1. rand1=Math.random(_global.repeats)
Warum? Soll bedeuten=

Gebe mir eine Zufallzahl zwischen 0 und den maximal geladenen Instanzen.

Zitat:
Zitat von sonar
Das müsste so heißen:
ActionScript:
  1. rand1=Math.floor(Math.random() * _global.repeats);
Ok, sagen wir _global.repeats wäre 6, sprich 6 Instanzen.

Dann könnte rand1 durch aus irgendeine Zahl * 6 sein. Wäre dann bei 3 zb 18. Und es gibt aber keine Instanz die container_18 lautet… wird ja hinterher konkateniert um an die Property _visible oder die Func swapDepths() zu kommen.

Und warum Abrunden? _global.repeats ist doch immer eine natürliche Zahl.

Ah… jetzt merk ich grad… Math.random() != random().

random() meinte ich natürlich!


Aber ok, hilft mir in dem Fall auch nicht weiter, da man mit dieser Methode nicht erst alle Bilder durchswitched, bevor sich die Zufallssequenz wiederholt. Das Problem könnte durch einen Algorithmus gelöst werden… aber geht doch bestimmt einfacher… bloßes Wechseln ohne Zufall würde auch erstmal reichen. 16.00Uhr ist nämlich Deadline… *arghs*

Yves
  Mit Zitat antworten
Alt 14-09-2004, 14:41   #4 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Hi Yves

Per Zufall swappen.
Kann man das nicht so machen?

ActionScript:
  1. anzBilder = 4;
  2. //----------------------------------------------------------------------
  3. for (i = 1; i <= anzBilder; i++) {
  4. _root.createEmptyMovieClip("b" + i + "_mc", i)._x = i * 50;
  5. _root["b" + i + "_mc"].loadMovie("b" + i + ".jpg");
  6. }
  7. //----------------------------------------------------------------------
  8. function neueZahl() {
  9. zufall = Math.ceil(Math.random() * anzBilder);
  10. _root["b" + zufall + "_mc"].swapDepths(_root.getNextHighestDepth());
  11. }
  12. //----------------------------------------------------------------------
  13. setInterval(neueZahl, 1000);

Gut man müsste noch Wiederholungen ausschließen.
Und bei Ebene 16000 und ein paar zerquewtschte
ist dann auch Schluss.
Aber immerhin.
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------

Geändert von thebiz (14-09-2004 um 15:14 Uhr)
thebiz ist offline   Mit Zitat antworten
Alt 14-09-2004, 15:21   #5 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hi John…

Klappt leider nicht. Immerhin weiß ich jetzt aber wie man ordentliche Zufallszahlen erzeugt

PHP-Code:
//Actionscript 2.0
var loadElements=function()
    {
    var 
movie=new LoadVars();
    
movie.object=this;
    
movie.load('movie.php');
    
movie.onLoad=function()
        {
        var 
container=_root.createEmptyMovieClip('container',250);
        
_global.totalImages=this.repeats;
        for(var 
i=0;i<=this.repeats;i++)
            {
            var 
image=this['image_'+i];
            var 
frame=_root.container.createEmptyMovieClip('frame_'+i,i+1);
            
frame.loadMovie(image);
            }
        var 
randomOrder=function() 
            {
            
zufall Math.ceil(Math.random() * _global.totalImages);
            
_root.container['frame_'+zufall].swapDepths(_root.container.getNextHighestDepth());
            
            };
        
setInterval(randomOrder1000);    
        
delete this.object['movie'];
        }
    }
loadElements(); 
Ich vermute mal, das es an den dynamisch geladenen Inhalten liegt. Da war irgendetwas mit noch nicht geladenen Headern…
Aber selbst unter MX 7 bekomme ich keinen Wert _root.container.getNextHighestDepth(); zurück.

Yves
  Mit Zitat antworten
Alt 14-09-2004, 15:26   #6 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Yves mit _root.container.getNextHighestDepth()
ermittelst Du irgendwie die Tiefe innerhalb des containers.

Du willst aber sicherlich die nächst höhere Ebene auf _root.
Also _root.getNextHighestDepth().
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 14-09-2004, 16:16   #7 (permalink)
Banned
 
Benutzerbild von projecktx
 
Registriert seit: Sep 2003
Beiträge: 2.071
müssen die bilder wirklich alle übereinander liegen??

wenn nicht lad die bilder doch dynamisch nach und wechsle sie mit dem movieclip. wenn du ihn jedesmal bevor du ein createEmptymovielip machst den mc removest brauchst du die tiefe nicht zu ändern.

gruss sascha
projecktx ist offline   Mit Zitat antworten
Alt 15-09-2004, 14:00   #8 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hi,

gestern 16.00 Uhr… ich hab die Bilder direkt in die Fla geschmissen und in die Frames gesetzt. Ist aber nur eine Übergangslösung.

Ok. Nun zum Problem. Wichtig wäre, das die Bilder alle direkt bereitstehen. Also einzeln nachladen würde in die Hose gehen, da die Bilder ultraschnell durchgewürfelt werden sollen. So 1 Bild / 0,5sek.

Ich habe überlegt, 3 Bilder von ca. 50 dynamisch zu laden und diese 3 durchzuschalten. Während des Durchschaltens werden weitere Bilder geladen. Sobald eins davon fertig ist, kommt es zur Liste hinzu.

Aber ok…erstmal schaffen, 3 Stück zu laden und diese durchzuschalten.

Yves
  Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 08:09 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele