Flashhilfe.de - Flash Community

Bilder automatisch anordnen [Flash MX]

 


AntwortenRegistrieren Seite1  

misterx#1
Benutzerbild von misterx
Beiträge: 73
Registriert: Jun 2002

15.04.2004, 12:16

Hallo Leute,

habe ein kleines Problem, ich lade (dynamisch mit php) Bilder in meinen swf Film. Mit folgendem Code reiht er mir die Bilder nicht genau anneinander.

bla = 0;
bla1 = 0;
for (var i = 1; i<=5; i++) {
   duplicateMovieClip("box", "box"+i, i);
   pic = i+".jpg";
   box1="box"+i;
   loadMovie(pic, box1);
   bla = getProperty(box1.pic, _width);
   bla1 = bla1+bla;
   trace(bla1);
   setProperty(box1, _x, bla1);
}


Ich will eine kleine Bildergalerie zusammenstellen, dort müssen die ganzen Bilder nebeneinander sein aber hier funktioniert es nicht ganz. Ich weiss aber nicht wo mein Denkfehler ist.

Vielleicht kann mir ja wer helfen.

Danke schon mal

MfG

Mister X

-=BoE=-#2
Benutzerbild von -=BoE=-
Beiträge: 144
Wohnort: B
Registriert: Nov 2003

15.04.2004, 14:58

hi misterx,

wenn du das Bild lädst wird der Code weiter ausgeführt, unabhängig davon ob das Bild tatsächlich schon fertig geladen ist.
Somit kannst du auch zu dem Zeitpunkt noch keine Aussagen über deren Breite (_width) machen.

Wie man das tatsächlich macht, findest du hier sicher im Forum. Denn zu loadMovie und jpg  gibts sicher viele Beiträge.

-=BoE=-
misterx#3
Benutzerbild von misterx
Beiträge: 73
Registriert: Jun 2002

Themenautor/in

15.04.2004, 18:16

Hallo,

es ist egal, wenn man einfach später diese Abfrage macht (Bilder schon geladen). Dieses Skript funktioniert immer noch nicht richtig. Hab dieses Problem dass du anspricht schon ausgeschlossen.

Aber danke trotzdem

MfG

Mister X

Maren#4
Benutzerbild von Maren
Beiträge: 36
Wohnort: Hamburg
Registriert: Jul 2003

24.06.2004, 14:31

Hallo Mister X!

ich hab ein ähnliches Problem, bei mir sind die Bilder verschieden groß,
die höhe soll angepasst und dann entsprechend nebeneinander platziert werden.

Ich lade die Bilder zwar nicht mit php sondern mit hilfe einer .txt aber vielleicht hast Du, oder irgendwer anders ja eine Lösung gefunden die mir auch weiterhilft.

Danke schonmal

Maren


Maren
Creator#5
Benutzerbild von Creator
Beiträge: 516
Registriert: Jul 2003

24.06.2004, 15:43

Also das ist mal ein interessantes Script. Insbesondere die gewählten Variablennamen geben keine Zweifel auf, wofür sie gedacht sind. :-)

Aber sag mal, was bekommst Du denn bei dem trace heraus?

Zufällig ein NaN? Könnte sein, oder.

Das kann so auch nicht wirklich funktionieren. Es hat außerdem sehr wohl was damit zu tun, ob die Bilder geladen wurden.

Aber wie es der Zufall will, können wir mal kurz einen auf Jean Pütz machen, denn:

Ich hab da mal was vorbereitet:


Da Du ja auf der Bühne deinen Dummy 'box' liegen hast, kann man den hervorragend dazu benutzen, ihn abprüfen zu lassen, ob alles geladen wurde.

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//Boxen duplizieren und Bilder hineinladen
actX = 0;
bilder_array = new Array();
for (var i = 1; i<=5; i++) {
    duplicateMovieClip("box", "box"+i, i);
    pic = i +".jpg";
    boxname="box"+i;
    loadMovie(pic, boxname);
   bilder_array.push(boxname)
}

//Leere Box dient als Preloader
box.onEnterFrame = function(){
   if(this._parent.bilder_array.length > 0){
      for(i=0; i< this._parent.bilder_array.length; i++){
         if(this._parent[_parent.bilder_array[i]].getBytesLoaded() == this._parent[_parent.bilder_array[i]].getBytesTotal()){
            this._parent.bilder_array.splice(i,1);
         }
      }
   }
//Alle Bilder wurden geladen, also jetzt positionieren
   else {
      for(i=1; i<= 5; i++){
         this._parent["box" + i]._x = this._root.actX;
         trace(this._parent.actX);
         this._parent.actX += this._parent["box" + i]._width;
      }
//Und jetzt noch das onEnterFrame weg, weil wir das ja jetzt nicht mehr brauchen
      delete this.onEnterFrame;
   }
}



Ich persöhnlich hätte es mit einem leeren MovieClip gemacht und auch nicht duplicateMovieClip benutzt, sondern attachMovie.
Aber das ist Geschmackssache

Hoffe mal, das Dir was weiterhilft .

Grüße

CR

\\\"Sometimes i think Flash is female\\\"

Zitat S. Wolter
Geändert von Creator am 24.06.04 um 15:46 Uhr
Maren#6
Benutzerbild von Maren
Beiträge: 36
Wohnort: Hamburg
Registriert: Jul 2003

24.06.2004, 17:34

Hey danke!

Das hab ich sogar mal einigermaßen verstanden!

nur da ich auch die Zahl der bilder einlese...

wo bringe ich denn jetzt mein:

loadVariablesNum("bilder1.txt", 0)
System.useCodepage = true;

unter?


-Hast Du auch noch ein Tip zum scaliieren der Bilder, damit sie alle in einer höhe sind?
Bisher werden sie bei mir auch nochnicht nebeneinander angezeigt.

-mit "splice" ist "slice" gemeint oder?

-und ist "this._parent" das gleiche wie "_root"?

lg Maren



Maren
Creator#7
Benutzerbild von Creator
Beiträge: 516
Registriert: Jul 2003

24.06.2004, 18:16

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//Boxen duplizieren und Bilder hineinladen
box.onData = function(){
  delete this.onData;
  this._parent.createPictures(Bildanzahl);
}

box.loadVariables("Bilder1.txt")

createPictures = function(bildanzahl){
  actX = 0;
  bilder_array = new Array();
  for (var i = 1; i<=bildanzahl; i++) {
      duplicateMovieClip("box", "box"+i, i);
      pic = i +".jpg";
      boxname="box"+i;
      loadMovie(pic, boxname);
      bilder_array.push(boxname)
  }

//Leere Box dient als Preloader
  box.onEnterFrame = function(){
      if(this._parent.bilder_array.length > 0){
          for(i=0; i< this._parent.bilder_array.length; i++){
                  if(this._parent[_parent.bilder_array[i]].getBytesLoaded() == this._parent[_parent.bilder_array[i]].getBytesTotal()){
                  this._parent.bilder_array.splice(i,1);
              }
          }
      }
  //Alle Bilder wurden geladen, also jetzt positionieren
      else {
          for(i=1; i<= 5; i++){
              this._parent["box" + i]._x = this._root.actX;
              trace(this._parent.actX);
              this._parent.actX += this._parent["box" + i]._width;
          }
  //Und jetzt noch das onEnterFrame weg, weil wir das ja jetzt nicht mehr brauchen
            delete this.onEnterFrame;
      }
  }
}


Das _splice ist ein _splice. Schau mal in die Hilfe, was das macht.

Skalieren kannst Du die Bildere an der Stelle, wo Du sie positionierst.

Und das this.parent ist quasi das gleiche wie _root. Ich mache es halt immer anHand der aktuellen Pfade. Du kannst aber auch _root benutzen.

Grüße

CR


\\\"Sometimes i think Flash is female\\\"

Zitat S. Wolter
Geändert von Creator am 24.06.04 um 18:18 Uhr
Maren#8
Benutzerbild von Maren
Beiträge: 36
Wohnort: Hamburg
Registriert: Jul 2003

24.06.2004, 19:30

jippie!

es funktioniert!

bis auf das ich immer eine nette Fehlermeldung bekomme,

"Flashplayer wird durch ein Script in diesem Film verlangsamt..."

...die Bilder sind gleich von Beginn an zu sehen, erst nach dieser
Fehlermeldung rutschen sie an die richtige Position, ich konnte Dein
script leider nicht 100% übernehmen, kannst Du nochmal gucken
wo der Fehler liegen könnte?

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//text laden
loadVariablesNum("bilder1.txt", 0);
System.useCodepage = true;
speed = 3;
ypos = 0;
xpos = 0;
maxhohe = 195;
//Boxen duplizieren und Bilder rein
_root.onData = function() {
   bilder_array = new Array();
   anzahl = Number(bilderzahl);
   for (var i = 1; i<=anzahl; i++) {
      duplicateMovieClip("box", "box"+i, i);
      pic = ("bild"+i+".jpg");
      boxname = "box"+i;
      loadMovie(pic, boxname);
      bilder_array.push(boxname);
   }
   box.onEnterFrame = function() {
      if (this._parent.bilder_array.length>0) {
         for (i=0; i<this._parent.bilder_array.length; i++) {
            if (this._parent[_parent.bilder_array[i]].getBytesLoaded() == this._parent[_parent.bilder_array[i]].getBytesTotal()) {
               this._parent.bilder_array.splice(i, 1);
            }
         }
      } else {
         //Bild positionierung
         for (i=1; 1<anzahl; i++) {
            breitevonbild = _root["box"+i]._width;
            hohevonbild = _root["box"+i]._height;
            neueprop = hohevonbild/breitevonbild;
            neuebreite = _root.maxhohe/neueprop;
            _root["box"+i]._height = _root.maxhohe;
            _root["box"+i]._width = neuebreite;
            this._parent["box"+i]._x = this._parent.xpos;
            this._parent.xpos += this._parent["box"+i]._width;
            _root["box"+i]._y = _root.ypos;
         }
         delete this.onEnterFrame;
      }
   };
};


Achja und wenn irgendwer nicht ausgelastet sein sollte:
die ganzen Bilder sollen sich jetzt natürlich noch je nach Mausbewegung
hin und her verschieben, bei mouseOver soll noch ein text erscheinen
und bei click das Bild im neuen Fenster öffnen, aber damit nerv ich ein
anderes mal ;-)

danke schonmal!

lg Maren

Maren
Creator#9
Benutzerbild von Creator
Beiträge: 516
Registriert: Jul 2003

25.06.2004, 00:30

Die Fehler liegen in Deinem Script. Du konntest zwar vielleicht meines nicht genau übernehmen, aber ansonsten geht es auch nicht,

Sorry, aber wir sind hier ein HilfeForum, keine 'ich mach das mal für Dich'-Lösung.

OHNE das Bös zu meinen.

Wenn Du das haben willst ... nur ein Tip ... pack alles in einen MC und verschieb den anhand Deines Mauszeigers.

Sei mir nicht böse, ich finde es nur etwas frech ... wir lösen hier einzelne Probleme. Wenn Du's nicht hinbekommst, dann frag nach, ob es Dir jemand basteln kann. Ansonsten helfen wir gerne bei Problemen. NICHT bei Komplettlösungen, obwohl ich Dir schon fast eine geliefert habe.

Einfach weiterlernen und selber machen!

Wenn Du's gar nicht hinbekommst, dann frag wieder; ein wenig Eigeninitiative wäre wünschenswert.

Grüße

CR

\\\"Sometimes i think Flash is female\\\"

Zitat S. Wolter
Geändert von Creator am 25.06.04 um 08:48 Uhr
Maren#10
Benutzerbild von Maren
Beiträge: 36
Wohnort: Hamburg
Registriert: Jul 2003

25.06.2004, 00:40

Hallo Creator!

Sorry, da hast Du mich falsch verstanden!!! ich will nicht das mir das jemand bastelt, damit wollte ich nur ausdrücken, was ich noch damit vor habe! deshalb das ;-) weil ich deswegen bestimmt nochmal nerven werde, aber es ist keineswegs meine Absicht eine Lösung vorgesetzt zu bekommen, ich wills doch nur lernen!

Mein Problem ist diese Fehlermeldung! ich weiß nicht wie ich sie wegbekommen kann, bzw. wo sich die Schleife aufhängt.

würde mich riesig freuen wenn Du da nochmal drüber guckst!

lg Maren

Maren
Creator#11
Benutzerbild von Creator
Beiträge: 516
Registriert: Jul 2003

25.06.2004, 08:16

OK, das ist ja in Ordnung.

Dann schick das Ding mal her, oder Poste es. Dann schaue ich nochmal drüber.

Grüße

CR

\\\"Sometimes i think Flash is female\\\"

Zitat S. Wolter
Maren#12
Benutzerbild von Maren
Beiträge: 36
Wohnort: Hamburg
Registriert: Jul 2003

25.06.2004, 09:52

Guten Morgen :-)

Welchen Teil ich bei Dir nicht nachvollziehen kann ist:

ActionScript:
1this._parent.createPictures(Bildanzahl);


und entsprechend

ActionScript:
1createPictures = function(bildanzahl){


da ist wohl der Fehler, ich weiß nicht wie ich das für mich adaptieren
könnte.


http://onlinespeicherdl.web.de/transfer/download/original/8908021/1945642/Galerie.zip?sid=000000F6113087F835C73344330CE87B400837&name=Galerie.zip

downloaden geht glaub ich nur über "Link auf Datenträger downloaden"
weil die Datei in einem Passwortgeschützten Bereich liegt -so oder so
ähnlich

lg Maren

ps.: hab nur MX

Maren
Geändert von Maren am 25.06.04 um 09:54 Uhr
Creator#13
Benutzerbild von Creator
Beiträge: 516
Registriert: Jul 2003

25.06.2004, 13:41

Der Fehler lag bei Dir :-)

Du hattest geschrieben:
ActionScript:
1for (i=1; 1<anzahl; i++)


Das kann ja nicht gehen. 1 ist immer kleiner anzahl. Deswegen die endlosschleife.

Ich hab jetzt hier die Fehlersichere Sache.

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
_root.createEmptyMovieClip("Preloader",3);
//text laden
//Boxen duplizieren und Bilder rein
posx = 0;
posy = 0;
maxHeight = Stage.height;

arrangePictures = function(){
   for (var i=1; i<=_root.anzahl; i++) {
      prop = _root["box"+i]._height/maxHeight;
      _root["box"+i]._height = maxHeight;
      _root["box"+i]._xscale= _root["box"+i]._yscale;
      _root["box"+i]._x = posx;
      posx += _root["box"+i]._width;
      _root["box"+i]._y = posy;         
   }
}

Preloader.onData = function() {
   _root.anzahl = Number(this.bilderzahl);
   _root.bilder_array = new Array();
   for(var i=1; i<= _root.anzahl; i++){
      _root.box.duplicateMovieClip("box"+i, 10+i);
      _root["box" +i].loadMovie("bild" + i + ".jpg");
      _root.bilder_array.push("box"+i);
   }
   this.onEnterFrame = function(){
      if(_root.bilder_array.length > 0){
         for(var i=0; i<_root.bilder_array.length; i++){
            if(_root[_root.bilder_array[i]].getBytesLoaded() == _root[_root.bilder_array[i]].getBytesTotal()){
               _root.bilder_array.splice(i, 1);
            
            }
         }
      }
      else{
         _root.arrangePictures();
         delete this.onEnterFrame;
      }
   }
}
Preloader.loadVariables("bilder1.txt", 0);
stop();


Allerdings würde ich nicht mit Stage.width arbeiten. Das feit Dich nämlich nicht davor, daß Bilder rechts außerhalb der Bühne angeordnet werden. Du solltest also entweder ne feste Größe angeben oder beide Werte auswerten. Dann wird's allerdings haarig. Und muß außerdem nicht sein.

Grüße

CR

\\\"Sometimes i think Flash is female\\\"

Zitat S. Wolter
Geändert von Creator am 25.06.04 um 16:23 Uhr
Maren#14
Benutzerbild von Maren
Beiträge: 36
Wohnort: Hamburg
Registriert: Jul 2003

25.06.2004, 13:52

*ichbinsoblöd*

Jetzt läuft es natürlich... vielen vielen Dank!!!

lg Maren

Maren

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2022 Sebastian Wichmann - Flashhilfe.de