Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-01-2005, 21:41   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2004
Beiträge: 99
Question "i-Formel"-Problem

Hi, ich habe da ein probem mit einer Bildergalerie:
ich habe 6 Bildflächen, in denen jeweils ein bild gezeigt werden sollen, die Bilder sind von 1-15 durchnummeriert.
Wenn ich auf einen button (scrollrechts) drücke, soll jedes bild um ein nach rechts veschoben werden, dass habe ich erst mit

ActionScript:
  1. create = function () {
  2.  
  3.         mc = circle.prev1.createEmptyMovieClip('holder'+i, 0);
  4.         mc.loadMovie('pic'+(i)+".jpg", 0);
  5.        
  6.         mc = circle.prev2.createEmptyMovieClip('holder'+i, 0);
  7.         mc.loadMovie('pic'+(i+1)+".jpg", 0);
  8.        
  9.         mc = circle.prev3.createEmptyMovieClip('holder'+i, 0);
  10.         mc.loadMovie('pic'+(i+2)+".jpg", 0);
  11.        
  12.         mc = circle.prev4.createEmptyMovieClip('holder'+i, 0);
  13.         mc.loadMovie('pic'+(i+3)+".jpg", 0);
  14.        
  15.         mc = circle.prev5.createEmptyMovieClip('holder'+i, 0);
  16.         mc.loadMovie('pic'+(i+4)+".jpg", 0);
  17.        
  18.         mc = circle.prev6.createEmptyMovieClip('holder'+i, 0);
  19.         mc.loadMovie('pic'+(i+5)+".jpg", 0);
  20. };
  21.  
  22. scrollrechts.onPress = function() {
  23.    
  24.         i=i+1;
  25.     create();   
  26.    
  27. };
  28. scrolllinks.onPress = function() {
  29.    
  30.     i=i-1;
  31.     create();
  32.  
  33. };
gelöst. es funktionier auch soweit, bis i über die maximale anzahl an bildern kommt oder kleiner als null wird, was ja auch klar ist, ich weiß aber nicht wie ich es lsen soll, wenn ich zb. 20 bilder habe, dass er wieder zirkular nach 28 bei 1 anfängt.

z.B.:
Bilder 17, 18, 19, 20, 1, 2
i= 17, 18, 19, 20, 21,22
i= 37, 38, 39, 40, 41,42
i= -3 , -2, -1, 0, 1, 2

Weiß jamnd wie man das am geschicktesten lösen kann, oder ob vielleicht sogar eine funktion oder so etwas dfür gibt?
Danke schon mal für eure bemühungen.

Geändert von Johann.S (09-01-2005 um 21:55 Uhr)
Johann.S ist offline   Mit Zitat antworten
Alt 09-01-2005, 22:49   #2 (permalink)
squirlish
 
Benutzerbild von ChriZi
 
Registriert seit: Mar 2004
Ort: CH
Beiträge: 492
ich würde das ganze mit einem array machen...
also ein array mit allen bildern drin...

dan mit einer for schleife alle holders kreieren und die bilder rein laden...
und dann das arrei bei push einfach durchlaufen lassen... das dreht sich dann von selbst im kreise!
__________________
SQUIRLART|PHOTOGRAPHY
ChriZi ist offline   Mit Zitat antworten
Alt 10-01-2005, 00:25   #3 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
ActionScript:
  1. var maxZahl = 20: // bsp
  2.  
  3.  
  4. create = function () {
  5.        var z;
  6.        for(var j = 1; j<=6; j++){
  7.             if(i <0){ z=maxZahl; i=maxZahl;}else if(i>maxZahl){ z=j; i=1;}else{ z= i+j;};
  8.             var mc = circle['prev'+j].createEmptyMovieClip('holder'+z, 0);
  9.             mc.loadMovie('pic'+z+'.jpg', 0);
  10.         }
  11. }


sollte eigentlich schon reichen...


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 11-01-2005, 09:51   #4 (permalink)
Neuer User
 
Registriert seit: Oct 2004
Beiträge: 99
Danke für eure antworten, aber es haut noch nicht ganz hin, habe es erst so ausprobiert, wie kelor es beschrieben hatte, das Problem ist nun aber, dass es einen Sprung von 6 bildern gibt, wenn die grenzen 0 oder 20 überschritten sind.
Zu dem Array habe ich noch mal ne Frage, die holder kreieren und die bilder zu laden funktioniert ja so wie kelo es schon beschrieben hat, dann habe ich vorher alle bilder in ein array geladen bilder[], wenn ich jetzt auf nen button drücke wird i um eins erhöht, so funktioniert es mit dem array ja nicht, weil wenn maximal 20 elemente im array sind kann er ja nicht element 21 anzeigen.
Gibt es den den "befehl", dass er einfach das nächste array element anzeigt also nach 20 wieder 1?
Ich habe schon in der reference gesucht aber nichts dementsprechendes gefunden

ActionScript:
  1. create = function () {
  2.              for(var j = 0; j<=3; j++){
  3.             mc =circle['prev'+j].createEmptyMovieClip('holder'+i, 0);
  4.             mc.loadMovie(bilder[i], 0); }
Johann.S ist offline   Mit Zitat antworten
Alt 11-01-2005, 10:38   #5 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
sekunde...trace mal die z und i werte...

ActionScript:
  1. var maxZahl = 20: // bsp
  2.  
  3.  
  4. create = function () {
  5.        var z;
  6.        for(var j = 1; j<=6; j++){
  7.             if(i <0){ z=maxZahl; i=maxZahl;}else if(i>maxZahl){ z=j; i=1;}else{ z= i+j;};
  8.             trace('Z-Wert = '+z+' und der I-Wert = '+i+' Durchlauf J ist : '+j);
  9.             var mc = circle['prev'+j].createEmptyMovieClip('holder'+z, 0);
  10.             mc.loadMovie('pic'+z+'.jpg', 0);
  11.         }
  12. }


was kommt den da raus?


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 11-01-2005, 15:55   #6 (permalink)
Neuer User
 
Registriert seit: Oct 2004
Beiträge: 99
Bevor ich den trace poste schilder ich mal das problem:
in meinem beispiel habe ich jetzt die for schleife von 1 bis 7 und maxzahl=15.

wenn i=9 ist, dann sucht er als letztes bild in der for schleife bild i+j=16, dass es gar nicht gibt.
Habe jetzt die bilder in ein array hochgeladen und dann gibt er mir mir für Bild 15 nicht das gewünschte Bild 1 sondern Bild8;
Wenn ich witer in die gleiche richtung rotieren lasse erhalte ich:

Bild 13, 14, 15, 8, 9, 10, 11

Also ab fünfzehn alle um 7 versetzt.
z ist für diese werte :

8^=16, 9^=17, 10^=18, 11^=19.

Warum wird mir in einem Array mit 15 elementen bei nummer [16] das 8 und nicht dass [1] element ausgegeben?

Geändert von Johann.S (11-01-2005 um 16:13 Uhr)
Johann.S ist offline   Mit Zitat antworten
Alt 11-01-2005, 17:44   #7 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
sodele..ich hab mir´s nochmal angesehen...
ich schlage folgende lösung vor...

ActionScript:
  1. var maxZahl = 20; // bsp
  2. function setElem(){var tmp=[]; for(var i=1; i<=maxZahl;i++){tmp.push(i); }return tmp;}
  3. var elementArr =setElem();
  4.  
  5.  
  6. create = function (way) {
  7.        var tmp;
  8.        if( way == 'plus'){
  9.            tmp = elementArr.shift();
  10.            trace('vorher: '+elementArr);
  11.            elementArr.push(tmp);
  12.            trace('nachher: '+elementArr);
  13.        }else{
  14.            tmp = elementArr.pop();
  15.            elementArr.splice(0, 0, tmp);
  16.        }
  17.        for(var j = 1; j<=6; j++){
  18.            var elem = elementArr[(j-1)];
  19.            var mc = circle['prev'+j].createEmptyMovieClip('holder'+elem);
  20.            mc.loadMovie('pic'+elem+'.jpg', 0);
  21.        }
  22. }

so..nunhast du ja wohl 2 buttons die die richtung ändern, oder wie auch immer...
ich hab das mal anhand zweier buttons, die plus und minus heißen, demonstriert.

ActionScript:
  1. this.plus.onRelease = function(){
  2.      create('plus');
  3. }
  4.  
  5. this.minus.onRelease = function(){
  6.      create('minus');
  7. }


funkioniert tadellos!

greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 11-01-2005, 18:37   #8 (permalink)
Neuer User
 
Registriert seit: Oct 2004
Beiträge: 99
das nenn ich Perfektion, funktioniert jetzt einwand frei und bin echt beeindruckt von der Lösung.
Dankeschön
Johann.S ist offline   Mit Zitat antworten
Alt 11-01-2005, 21:42   #9 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
gerne geschehen...


greetz

kelor
kelor ist offline   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 18:11 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele