Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 31-05-2004, 00:19   #1 (permalink)
Neuer User
 
Registriert seit: Dec 2002
Ort: Hamburg
Beiträge: 61
Problem mit Yugop bewegung

Hallo,

ich hier ein Problem, bei dem ich einfach nicht weiter komme, ich hoffe, das mir jemand von euch helfen kann.

Ich habe mir hier aus dem Forum eine Yugop-Bildergalerie runtergeladen, diese habe ich jetzt umgebaut, dass die Bilder nicht mehr aus einem Ordner gelesen werden, sondern das Flash sich die Bildanzahl und die links zu den Bildern von PHP holt...dieses PHP-Script holt es sich dann von einer MySQL Datenbank.

Wenn ich das Standard Yugop File aus dem Forum nehme, funktioniert alles auch mit der Bewegung etc. Bei meiner modifizierung funktioniert auch alles, bis auf die Bewegung und die RollOver der Bilder...ich weiß nicht woran es liegt, habe es schon mehrmals versucht.

Hier mein modifiziertes Script:
ActionScript:
  1. function laden(){
  2.     bildanzahl = _root.bilderanzahl;
  3.     if (i<=bildanzahl){
  4.         _root.createEmptyMovieClip('pic'+i, i);
  5.         _root['pic'+i].loadMovie(_root.bilder_a[i], 0);
  6.         _root['pic'+i]._alpha = 30;
  7.         this.onEnterFrame = function(){
  8.             if (_root['pic'+i]._width>10){
  9.                 _root['pic'+i]._y = starty;
  10.                 _root['pic'+i]._x = _root['pic'+(i-1)]._x+_root['pic'+(i-1)]._width+abstand;
  11.                 delete this.onEnterFrame;
  12.                 i++;
  13.                 laden();
  14.             }
  15.         }
  16.     }else{
  17.         this.laenge=this._width
  18.         for (var k = 0; k<=_root.bilderanzahl; k++){
  19.             //this['pic'+k].id = k;
  20.             _root['pic'+k].onRollOver = function(){
  21.                 this._alpha = 100;
  22.                 }
  23.             _root['pic'+k].onRollOut = function(){
  24.                 this._alpha = 30;
  25.             }
  26.             _root['pic'+k].onPress = function(){
  27.                 trace("gedrückt" + this._name);
  28.                 //buttonaktionen
  29.             }
  30.            
  31.         }
  32.         move();
  33.         }
  34.    
  35. }
  36.  
  37. function move(){
  38.     bildanzahl = _root.bilderanzahl;
  39.     this.onEnterFrame = function(){
  40.         var x=_root._xmouse
  41.         var y=_root._ymouse
  42.         var h=hoehe
  43.         var b=breite
  44.         for(var i=1;i<=bildanzahl;i++){
  45.         var mc=_root['pic'+i]
  46.         mc._x += speed1;
  47.         if(mc._x>=breite){
  48.             mc._x -=laenge
  49.         }
  50.    
  51.         if(mc._x<=-mc._width){
  52.             mc._x +=laenge
  53.         }
  54.             }
  55.         if((x>0 && x<(mitte-10) && y>0 && y<h) ||(x<breite && x>(mitte+10) && y>0 && y<h)){
  56.         var r = _root._xmouse-mitte;
  57.         var sp = -r;
  58.         speed1 = sp/(10*speed);
  59.         }else{
  60.         speed1=0
  61.         }
  62.     }
  63. }

Die Move-Funktion wird garnicht aufgerufen! Dabei habe ich nur diese Zeile geändert:
ActionScript:
  1. _root['pic'+i].loadMovie(_root.bilder_a[i], 0);
  2. // vorher:
  3. _root['pic'+i].loadMovie(i+".jpg", 0);

Im Anhang nochmal das Original YUGOP-Menü welches funktioniert, finde meinen Fehler leider nicht. Wäre über jeden Tipp dankbar!
Angehängte Dateien
Dateityp: zip yugop.zip (4,6 KB, 34x aufgerufen)
BaRt4EvEr ist offline   Mit Zitat antworten
Alt 31-05-2004, 12:03   #2 (permalink)
Neuer User
 
Registriert seit: Dec 2002
Ort: Hamburg
Beiträge: 61
Kann mir denn niemand helfen oder habe ich mich unverständlich ausgedrückt?

Es funktioniert ja fast alles, nur die Move(bewegen) Funktion wird einfach nicht aufgerufen, wenn ich das normal mit Bildern aus einem Ordner versuche, gehts....

Wäre echt nett, wenn mir jemand helfen könnte!
BaRt4EvEr ist offline   Mit Zitat antworten
Alt 31-05-2004, 14:43   #3 (permalink)
Neuer User
 
Registriert seit: Dec 2002
Ort: Hamburg
Beiträge: 61
Sorry, die Fla war in MX 2004 Format, jetzt nochmal als MX :-)
Angehängte Dateien
Dateityp: zip bildermenue.zip (6,8 KB, 24x aufgerufen)
BaRt4EvEr ist offline   Mit Zitat antworten
Alt 31-05-2004, 14:56   #4 (permalink)
vodoo
Gast
 
Beiträge: n/a
Kann dir schlecht helfen ohne die php und die Bilder..............lol


voo
  Mit Zitat antworten
Alt 31-05-2004, 15:29   #5 (permalink)
Neuer User
 
Registriert seit: Dec 2002
Ort: Hamburg
Beiträge: 61
Sorry, wurde ich auch gerade drauf aufmerksam gemacht.
Ich habe jetzt weiter dran rumgebastelt, jetzt bewegt es sich zwar aber die Bilder verschieben sich ineinander, anstatt an das letzte Bild rangehängt zu werden. Jetzt habe ich dann halt nur noch das oben genannte Problem in dieser Zeile, welche ich nicht hinbekomme:
ActionScript:
  1. if(mc._x>=breite){
  2. mc._x -=laenge;
  3. }
  4. if(mc._x<=-mc._width){
  5. mc._x = _root['pic'+(i-1)]._x + (laenge+abstand);
  6. }

Die zuletzt gepostete Fla ist noch aktuell, bis auf die actions-Funktion, die sieht jetzt so aus:
ActionScript:
  1. MovieClip.prototype.actions = function(){
  2.     _root.anzeige = "actions";
  3.     bildanzahl = _root.bilderanzahl;   
  4.     // die ganzen rollover und rollout actions funktionieren!
  5.     this.onRollOver = function(){
  6.         this._alpha = 100;
  7.     }
  8.     this.onRollOut = function(){
  9.         this._alpha = 30;
  10.     }
  11.     this.onEnterFrame = function(){
  12.         var x=_root._xmouse;
  13.         var y=_root._ymouse;
  14.         var h=hoehe;
  15.         var b=breite;
  16.         for(var i=0;i<=bildanzahl;i++)
  17.         {
  18.         var mc=_root['pic'+i];
  19.         mc._x += speed1;
  20.         if(mc._x>=breite){
  21.             mc._x -=laenge;
  22.             }
  23.         if(mc._x<=-mc._width){
  24.             mc._x +=laenge;
  25.             }
  26.             }
  27.         if((x>0 && x<(mitte-10) && y>0 && y<h) ||(x<breite && x>(mitte+10) && y>0 && y<h)){
  28.         var r = _root._xmouse-mitte;
  29.         var sp = -r;
  30.         speed1 = sp/(10*speed);
  31.         }else{
  32.         speed1=0;
  33.         }
  34.     }
  35.    
  36.    
  37. }

Wenn die Bilder jetz z.B. nach links scrollen und die Stage verlassen, müßten sie ganz rechts ans letzte Bild wieder angehängt werden, passiert aber nicht...die Bilder werden ineinander geschoben.

Mein PHP-Code für die Datenbankabfrage sieht so aus:
PHP-Code:
        include("dbconnect.php");
        
$result mysql_query("SELECT * FROM galerie WHERE publish=1 ORDER BY id ASC") or die ("Abfrage fehlgeschlagen!");
        
$anzahl mysql_affected_rows();
        echo 
'&bilderanzahl='.$anzahl;
        while(
$line mysql_fetch_array($result)){
            
$datenArray1[] = "thumbnail/" $line['linkthumbimg'];
            
$datenArray2[] = $line['id'];
            
$datenArray3[] = $line['thumbW'];
            
$datenArray4[] = $line['thumbH'];
            
$flashausgabe1 implode(",",$datenArray1);
            
$flashausgabe2 implode(",",$datenArray2);
            
$flashausgabe3 implode(",",$datenArray3);
            
$flashausgabe4 implode(",",$datenArray4);
            if(
strlen($log)>0){
                echo 
'&fehler='.$log;
            }
        } 
        print 
"&bilder=".$flashausgabe1."&bildid=".$flashausgabe2."&bildW=".$flashausgabe3."&bildH=".$flashausgabe4
Und die Ausgabe bei ca. 14 Bildern würde so aussehen:
PHP-Code:
&bilderanzahl=14
&bilder=thumbnail/bilder/thumbnails/45.jpg,thumbnail/bilder/thumbnails/46.jpg,thumbnail/bilder/thumbnails/47.jpg,thumbnail/bilder/thumbnails/48.jpg,thumbnail/bilder/thumbnails/56.jpg,thumbnail/bilder/thumbnails/57.jpg,thumbnail/bilder/thumbnails/58.jpg,thumbnail/bilder/thumbnails/59.jpg,thumbnail/bilder/thumbnails/60.jpg,thumbnail/bilder/thumbnails/61.jpg,thumbnail/bilder/thumbnails/62.jpg,thumbnail/bilder/thumbnails/63.jpg,thumbnail/bilder/thumbnails/64.jpg,thumbnail/bilder/thumbnails/65.jpg
&bildid=45,46,47,48,56,57,58,59,60,61,62,63,64,65
&bildW=800,800,800,800,133,133,133,75,133,133,133,75,133,133
&bildH=600,600,600,600,100,100,100,100,100,100,100,100,100,100 
Eigentlich bräuchte ich nur diese zwei Zeilen, in denen die Bilder nach links oder rechts geschoben werden. Wäre echt nett, wenn mir jemand helfen könnte.
BaRt4EvEr ist offline   Mit Zitat antworten
Alt 31-05-2004, 16:04   #6 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
naja, "nur diese zeilen" hast du nicht verändert. zur abfrage von bedingungen und deren erfüllungen kann man übrigens mit dem trace-befehl ungemein weit kommen
die oberen zeilen sind hier nur zum probieren. ich gehe mal davon aus, daß deine daten aus der php/db auch ankommen.

ActionScript:
  1. bilderanzahl = 10;
  2. i = 1;
  3. var hoehe = 200;
  4. var breite = Stage.width;
  5. var mitte = breite/2;
  6. var speed=3
  7.  
  8. function laden() {
  9.     bildanzahl = _root.bilderanzahl;
  10.     if (i<=bilderanzahl) {
  11.         var mc = _root.createEmptyMovieClip('pic'+i, i);
  12.         //_root['pic'+i].loadMovie(_root.bilder_a[i], 0);
  13.         _root['pic'+i].loadMovie("small/"+i+".jpg", 0);
  14.         _root['pic'+i]._alpha = 30;
  15.         this.onEnterFrame = function() {
  16.             if (_root['pic'+i]._width>10) {
  17.                 _root['pic'+i]._y = starty;
  18.                 _root['pic'+i]._x = _root['pic'+(i-1)]._x+_root['pic'+(i-1)]._width+abstand;
  19.                 delete this.onEnterFrame;
  20.                 i++;
  21.                 laden();
  22.             }
  23.         };
  24.     } else {
  25.         this.laenge = this._width;
  26.         for (var k = 0; k<=_root.bilderanzahl; k++) {
  27.             //this['pic'+k].id = k;
  28.             _root['pic'+k].onRollOver = function() {
  29.                 this._alpha = 100;
  30.             };
  31.             _root['pic'+k].onRollOut = function() {
  32.                 this._alpha = 30;
  33.             };
  34.             _root['pic'+k].onPress = function() {
  35.                 trace("gedrückt"+this._name);
  36.                 //buttonaktionen
  37.             };
  38.         }
  39.         move();
  40.     }
  41. }
  42. function move() {
  43.     bildanzahl = _root.bilderanzahl;
  44.     this.onEnterFrame = function() {
  45.         var x = _root._xmouse;
  46.         var y = _root._ymouse;
  47.         for (var i = 1; i<=bildanzahl; i++) {
  48.             var mc = _root['pic'+i];
  49.             mc._x += speed1;
  50.             if (mc._x>=breite) {
  51.                 mc._x -= laenge;
  52.             }
  53.             if (mc._x<=-mc._width) {
  54.                 mc._x += laenge;
  55.             }
  56.         }
  57.         if (y>0 && y<hoehe) {
  58.             if (x>0 && x<(mitte-10)) {
  59.                 speed1 = -speed;
  60.             }
  61.             if (x<breite && x>(mitte+10)) {
  62.                 speed1 = speed;
  63.             }
  64.             if (x>(mitte-10) && x<(mitte+10)) {
  65.                 speed1 = 0;
  66.             }
  67.         } else {
  68.             speed1 = 0;
  69.         }
  70.     };
  71. }
  72. laden();
warrantmaster ist offline   Mit Zitat antworten
Alt 31-05-2004, 16:23   #7 (permalink)
Neuer User
 
Registriert seit: Dec 2002
Ort: Hamburg
Beiträge: 61
Hi Warrent!

Leider bringt Trace nicht wirklich viel, weil ich mein File zum testen immer Online stellen muss, wegen der PHP - Abfrage, deswegen
hatte ich mir ja ein Textfeld gemacht um mir variablen anzeigen zu lassen.

Danke für das Script, funktioniert leider nicht richtig :-(
BaRt4EvEr ist offline   Mit Zitat antworten
Alt 31-05-2004, 20:37   #8 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
bei mir schon...?

klick
warrantmaster ist offline   Mit Zitat antworten
Alt 31-05-2004, 21:39   #9 (permalink)
Neuer User
 
Registriert seit: Dec 2002
Ort: Hamburg
Beiträge: 61
Hi Warrent,

also bei mir funktioniert das nicht :-(
Ich habe festgestellt, dass sich die Bilder überlappen, wenn die Anzahl der Bilder größer ist, als was auf die Stage paßt, weil dann kommt diese Abfrage:
ActionScript:
  1. if(mc._x>=breite){
  2.             mc._x -=breite-abstand;
  3.         }
Und dann überlappen sich irgendwann die Bilder. Ich bräuchte eine Formel, wenn das Bild verschwindet, dass dieses Bild sich an das letzte Bild der Reihe anordnet. Komme aber leider nicht auf die Lösung.

Weißt Du, wie ich das am besten mache? Hatte dir ja einen LINK geschickt, da kannst Du das sehen mit dem überlappen. Hatte es mal mit dieser Formel versucht:

ActionScript:
  1. if(mc._x >= breite){
  2.             if(i >= _root.bilder_r.length){
  3.                 mc._x = _root.bilder_r[0]._x-abstand;
  4.                 }else{
  5.                     mc._x = _root.bilder_r[i-1]._x-abstand;
  6.                     }
  7.             }
  8.         if(mc._x < 0){
  9.             if(i >= _root.bilder_r.length){
  10.                 if(mc != _root.bilder_r[0]){
  11.                     mc._x = _root.bilder_r[0]._x+abstand;
  12.                     }else{
  13.                         mc._x = _root.bilder_r[_root.bilder_r.length]._x+abstand;
  14.                         }
  15.                 }else{
  16.                     mc._x = _root.bilder_r[i-1]._x+abstand;
  17.                     }
  18.             }
geht aber nicht :-(

Ich hatte mir ein Array angelegt, mit den ganzen Namen der Bilder.
// ausgabe
_root.bilder_r = _root.pic1,_root.pic2,_root.pic3,_root.pic4 usw.
Da ist aber irgendwie ein Denkfehler drinnen.....und ich komme nicht drauf.
BaRt4EvEr ist offline   Mit Zitat antworten
Alt 24-06-2004, 09:49   #10 (permalink)
bit
Neuer User
 
Registriert seit: Jun 2004
Ort: Ulm
Beiträge: 17
Funktioniert das jetzt?

Hi,

funktioniert das jetzt bei dir? Wenn ja, könntest du das dann bitte hier nochmal posten. Das würde mich auch interessieren. Ich bastle nämlich auch schon seit ein paar Tagen an sowas aber irgendwie will das bei mir auch noch nicht.

Gruß,
Jürgen
bit 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 02:32 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele