Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-02-2008, 14:12   #1 (permalink)
Neuer User
 
Benutzerbild von sirclueless
 
Registriert seit: Nov 2001
Ort: Deutschland
Beiträge: 30
Question Zufalls Zitate einblenden

Hallo,

Ich habe eine Movieclip mit ca 16 Schlüsselbildern erstellt. Jedes Schlüsselbild enthält ein Zitat. Nun möchte ich das wenn das Flash gestartet wird per Zufall eines dieser 16 Zitate aus dem Movieclip langsam eingeblendet wird, dann eine gewisse Zeit lang stehen bleibt und dann wieder ausgeblendet wird. Danach soll sich das ganze wiederholen (also das nächste Zufallszitat eingeblendet werden, eine gewisse Zeit stehen bleiben und wieder ausgeblendet werden,.....usw.)

Kann mir da jemand weiterhelfen, wie ich das via Actionscript realisieren kann ??

Auf der Bühne habe ich 2 Ebenen. In der ersten liegt der Movieclip mit den Zitaten und in der zweiten habe ich nur das Actionscript.
Momentan wählt er zwar per zufall aus aber mit dem einblenden usw. weiss ich nicht wie es funktioniert :-(
Code:
gotoAndStop(1);	
mc_zitate.gotoAndStop(Math.ceil(Math.random()* mc_zitate.totalFrames));

trace(mc_zitate.currentFrame);
Kann mir jemand da bitte weiterhelfen??
Angehängte Dateien
Dateityp: zip zitat.zip (20,8 KB, 6x aufgerufen)

Geändert von sirclueless (21-02-2008 um 12:42 Uhr) Grund: Anhang dazu gemacht
sirclueless ist offline   Mit Zitat antworten
Alt 20-02-2008, 14:15   #2 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
--> verschoben. Hat nix mit AS2, geschweige denn AS3 zu tun.
__________________
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 21-02-2008, 21:15   #3 (permalink)
new user
 
Benutzerbild von PinkDragon
 
Registriert seit: Oct 2005
Beiträge: 140
Code:
MovieClip.prototype.start = function(){
  this._alpha = 0;
  this.gotoAndStop(Math.ceil(Math.random()* this.totalFrames));
  this.onEnterFrame = fadeIn();
}
MovieClip.prototype.fadeIn = function(){
  this._alpha++;
  if(this._alpha >= 100){
    delete this.onEnterFrame;
    this.wait = 1000;
    this.onEnterFrame = show();
  }
}
MovieClip.prototype.show = function(){
  this.wait--;
  if(this.wait <= 0){
    delete this.onEnterFrame;
    this.onEnterFrame = fadeOut();
  }
}
MovieClip.prototype.fadeOut = function(){
  this._alpha--;
  if(this._alpha <= 0){
    delete this.onEnterFrame;
    this.start();
  }
}

mc_zitate.start();
Habe jetzt schon sehr lange nicht mehr mit Flash gearbeitet, aber so könnte es funktionieren. (Bin mir mit den ganzen Prototypen usw. nicht mehr ganz sicher, aber das Grundsystem ist glaube ich verständlich...)

Gruß
PD
__________________
Die Summe aller menschlichen Intelligenz ist eine Konstante.
Das Problem ist das Bevölkerungswachtum...

Gratiswebserver mit MySQL-Datenbank und vieles mehr dank www.lima-city.de!
PinkDragon ist offline   Mit Zitat antworten
Alt 26-02-2008, 07:32   #4 (permalink)
Neuer User
 
Benutzerbild von sirclueless
 
Registriert seit: Nov 2001
Ort: Deutschland
Beiträge: 30
Hmmmm !Das klingt gut und sieht gut aus mit dem Prototypen. Aber ich weiss nicht wirklich wie ich das verwenden kann und wie ich das benutzen muss. Bin leider noch ein Flashanfänger :-(
Wenn Du mir das mal in meiner Vorlage einbauen könntest und ich sehen kann wie es funktioniert, bin ich bestimmt schlauer. Oder wenn Du mir nur genau erläuterst wie ich diesen Prototypen nutzen kann. Wäre echt super.
sirclueless ist offline   Mit Zitat antworten
Alt 26-02-2008, 14:56   #5 (permalink)
new user
 
Benutzerbild von PinkDragon
 
Registriert seit: Oct 2005
Beiträge: 140
Ich würde es dir gerne einbauen, allerdings habe ich kein CS3
Ich weis gar nicht, ob prototypen in FLash CS3 noch aktuell sind...
Um meinen Script zu verwenden, musst du ihn nur abschreiben
Es ist aber ein kleiner Fehler drinnen, schreibe einfach statt
Code:
this.onEnterFrame = Funktion();
Code:
this.onEnterFrame = Funktion;
Also die Klammern weglassen.

Sollte das Ganze nicht funktionieren, kann ich dir später, wenn du willst, noch ne Lösung mit einer Klasse bieten.

Gruß
PD
__________________
Die Summe aller menschlichen Intelligenz ist eine Konstante.
Das Problem ist das Bevölkerungswachtum...

Gratiswebserver mit MySQL-Datenbank und vieles mehr dank www.lima-city.de!
PinkDragon ist offline   Mit Zitat antworten
Alt 27-02-2008, 08:17   #6 (permalink)
Neuer User
 
Benutzerbild von sirclueless
 
Registriert seit: Nov 2001
Ort: Deutschland
Beiträge: 30
Funktioniert leider irgendwie nicht. Der Compiler meckert weil die Methoden fadeIn,show und fadeOut nicht definiert sind.
Wie gesagt ich bin über jede Lösung froh die mein Problem lösen tut :-D
sirclueless ist offline   Mit Zitat antworten
Alt 28-02-2008, 08:48   #7 (permalink)
nobody is perfect
 
Benutzerbild von Decrone
 
Registriert seit: Apr 2002
Ort: Bremen
Beiträge: 3.049
moin

ich hab mal den Code (AS1) von @PinkDragon genommen und ein paar Fehler ausgemerzelt. Sollte eigentlich funktionieren. Das ganze wird zwar per Random ausgewählt aber per Random ausgewählte FrameNr. kann trotzdem doppelt hintereinander vorkommen!

ActionScript:
  1. MovieClip.prototype.starten = function(){
  2.     this._alpha = 0;
  3.     this.gotoAndStop(Math.ceil(Math.random()* this._totalframes));
  4.     this.onEnterFrame = fadeIn;
  5. }
  6. MovieClip.prototype.fadeIn = function(){
  7.     this._alpha++;
  8.     if(this._alpha >= 100){
  9.         delete this.onEnterFrame;
  10.         this.wait = 100;
  11.         this.onEnterFrame = shows;
  12.     }
  13. }
  14. MovieClip.prototype.shows = function(){
  15.     this.wait--;
  16.     if(this.wait <= 0){
  17.         delete this.onEnterFrame;
  18.          this.onEnterFrame = fadeOut;
  19.     }
  20. }
  21. MovieClip.prototype.fadeOut = function(){
  22.     this._alpha--;
  23.     if(this._alpha <= 0){
  24.         delete this.onEnterFrame;
  25.         this.starten();
  26.     }
  27. }
  28.  
  29. this.mc_zitate.starten();

Gruss Dec
__________________
FF Unterstützen! Erste Hilfe! häufig gestellten Fragen
...................... ............... ................................
Decrone ist offline   Mit Zitat antworten
Alt 29-02-2008, 07:17   #8 (permalink)
Neuer User
 
Benutzerbild von sirclueless
 
Registriert seit: Nov 2001
Ort: Deutschland
Beiträge: 30
Danke für die Hilfe. Bekomme aber immer folgende Fehlermeldung im Compiler und die Zitate laufen ganz schnell nacheinander durch ohne einblenden und sonstiges :-( :

1120: Zugriff auf eine nicht definierte Eigenschaft fadeIn.
1120: Zugriff auf eine nicht definierte Eigenschaft shows.
1120: Zugriff auf eine nicht definierte Eigenschaft fadeOut.

Weiss nicht was ich falsch mac he ! Habe Deinen Code in das erste Bild kopiert und es funktioniert leider nicht. Was mache ich falsch ???
sirclueless ist offline   Mit Zitat antworten
Alt 29-02-2008, 14:22   #9 (permalink)
new user
 
Benutzerbild von PinkDragon
 
Registriert seit: Oct 2005
Beiträge: 140
Hmm... dann ist Flash CS3 wohl noch etwas strenger. Probier es mal so:
Code:
MovieClip.prototype.starten = function(){
  this._alpha = 0;
  this.gotoAndStop(Math.ceil(Math.random()* this._totalframes));
  this.onEnterFrame = this.fadeIn;
}
MovieClip.prototype.fadeIn = function(){
  this._alpha++;
  if(this._alpha >= 100){
    delete this.onEnterFrame;
    this.wait = 100;
    this.onEnterFrame = this.show;
  }
}
MovieClip.prototype.show = function(){
  this.wait--;
  if(this.wait <= 0){
    delete this.onEnterFrame;
    this.onEnterFrame = this.fadeOut;
  }
}
MovieClip.prototype.fadeOut = function(){
  this._alpha--;
  if(this._alpha <= 0){
    delete this.onEnterFrame;
    this.starten();
  }
}

mc_zitate.starten();
Müsste eigendlich gehen. (Ist nur Decrones Code mit ner kleinen Änderung...)

Gruß
PD
__________________
Die Summe aller menschlichen Intelligenz ist eine Konstante.
Das Problem ist das Bevölkerungswachtum...

Gratiswebserver mit MySQL-Datenbank und vieles mehr dank www.lima-city.de!

Geändert von PinkDragon (29-02-2008 um 14:24 Uhr)
PinkDragon ist offline   Mit Zitat antworten
Alt 29-02-2008, 19:53   #10 (permalink)
nobody is perfect
 
Benutzerbild von Decrone
 
Registriert seit: Apr 2002
Ort: Bremen
Beiträge: 3.049
ansonsten, wenn das mit dem Beispiel von @PinkDragon nicht klappen sollte, dann versuch dieses Skript mal und zur Sicherheit den in Flash8 abgespeicherten Anhang.

PHP-Code:
var framesArr:Array = new Array();

function 
arr(){
    for(var 
i=1i<mc_zitate._totalframes+1i++){
        
framesArr.push(i);
    }
};

function 
starten(pObj:MovieClip){
      
pObj._alpha 0;
    if(
framesArr.length ==  0){
        
arr();
        
trace("Array gefüllt");
    }
    var 
frameauswahl:Number random(framesArr.length);
    
trace("Der Inhalt der Array ist: "+framesArr" und die Arraylänge ist: "+framesArr.length);
    
trace("Per random ausgewählte Index Nr ist: "+frameauswahl+" \nund der Inhalt dieser IndexNr. ist: "+framesArr[frameauswahl]+ " also Frame"+framesArr[frameauswahl]+" wurde ausgewählt\n");
    
pObj.gotoAndStop(framesArr[frameauswahl]);
      
fadeIn(pObj);
    
framesArr.splice(frameauswahl1);
};

function 
fadeIn(pObj:MovieClip){
    
pObj.onEnterFrame = function(){
          
this._alpha++;
          if(
this._alpha >= 100){
            
delete this.onEnterFrame;
            
this.wait 100;
            
shows(this);
        }
      }
};

function 
shows(pObj:MovieClip){
    
pObj.onEnterFrame = function(){
          
this.wait--;
          if(
this.wait <= 0){
            
delete this.onEnterFrame;
                
fadeOut(pObj);
        }
      }
};

function 
fadeOut(pObj:MovieClip){
    
pObj.onEnterFrame = function(){
        
this._alpha--;
        if(
this._alpha <= 0){
            
delete this.onEnterFrame;
            
starten(this);
        }
      }
};

starten(mc_zitate); 
Ach übrigends, es wird jetzt auch nicht mehr doppelt abgespielt. Und die trace Ausgabe ist nur zum bessern Verständnis gedacht! Kannste also löschen!

Gruss Dec
Angehängte Dateien
Dateityp: zip zitat.zip (5,4 KB, 11x aufgerufen)
__________________
FF Unterstützen! Erste Hilfe! häufig gestellten Fragen
...................... ............... ................................

Geändert von Decrone (29-02-2008 um 19:56 Uhr)
Decrone ist offline   Mit Zitat antworten
Alt 29-02-2008, 22:55   #11 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Zitat:
Zitat von sirclueless Beitrag anzeigen
Danke für die Hilfe. Bekomme aber immer folgende Fehlermeldung im Compiler und die Zitate laufen ganz schnell nacheinander durch ohne einblenden und sonstiges :-( :

1120: Zugriff auf eine nicht definierte Eigenschaft fadeIn.
1120: Zugriff auf eine nicht definierte Eigenschaft shows.
1120: Zugriff auf eine nicht definierte Eigenschaft fadeOut.
Dann stell bitte nicht 'ActionScript 3.0' in den Einstellungen für deine FLA ein, wenn du schon "clueless" bist...
__________________
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 01-03-2008, 14:02   #12 (permalink)
nobody is perfect
 
Benutzerbild von Decrone
 
Registriert seit: Apr 2002
Ort: Bremen
Beiträge: 3.049
jep Sonar recht geben müssen

so und hier nochmal die Variante mit setInterval gesteuert und leicht entrümpelt

PHP-Code:
var framesArr:Array = new Array();
var 
id:Number;

function 
arr(){
    for(var 
i=1i<mc_zitate._totalframes+1i++){
        
framesArr.push(i);
    }
};

function 
starten(pObj:MovieClippTime:Number){
      
pObj._alpha 0;
    if(
framesArr.length ==  0){
        
arr();
    }
    var 
frameauswahl:Number random(framesArr.length);
    
pObj.gotoAndStop(framesArr[frameauswahl]);
      
fadeIn(pObjpTime);
    
framesArr.splice(frameauswahl1);
};

function 
fadeIn(pObj:MovieClippTime:Number){
    
pObj.onEnterFrame = function(){
          
this._alpha++;
          if(
this._alpha >= 100){
            
delete this.onEnterFrame;
            
id setInterval(showspTimepObj); 
        }
      }
};

function 
shows(pObj:MovieClip){
    
clearInterval(id);
    
fadeOut(pObj);    
};

function 
fadeOut(pObj:MovieClip){
    
pObj.onEnterFrame = function(){
        
this._alpha--;
        if(
this._alpha <= 0){
            
delete this.onEnterFrame;
            
starten(this);
        }
      }
};

starten(mc_zitate2000);//2000 Millisekunden = 2 Sekunden lesepause 
Gruss Dec
__________________
FF Unterstützen! Erste Hilfe! häufig gestellten Fragen
...................... ............... ................................
Decrone ist offline   Mit Zitat antworten
Alt 03-03-2008, 07:11   #13 (permalink)
Neuer User
 
Benutzerbild von sirclueless
 
Registriert seit: Nov 2001
Ort: Deutschland
Beiträge: 30
JA das war der Fehler ! Hatte Actionscript 3 eingestellt :-(
Bin wirklich Clueless ;-)


Aber das Beispiel hier oben drüber hat noch nen Fehler. Das erste Zitat wird eingeblendet und ausgeblendet. Super. Dann das zweite Zitat wird eingeblendet und bleibt stehen und nichts passiert mehr :-/ Weiss gar net woran das liegen kann.

Geändert von sirclueless (03-03-2008 um 07:23 Uhr)
sirclueless ist offline   Mit Zitat antworten
Alt 03-03-2008, 17:31   #14 (permalink)
nobody is perfect
 
Benutzerbild von Decrone
 
Registriert seit: Apr 2002
Ort: Bremen
Beiträge: 3.049
upps

hatte vergessen in der Funktion (FadeOut) einen zusätzlichen Parameter mit zu übergeben und die Funktion (shows) hab ich auch entfernt, die brauchen wir ja wirklich nicht! Der Fehler lag aber an der Parameterübergabe.
Jetzt sollte es aber loopen

PHP-Code:
var framesArr:Array = new Array(); 
var 
id:Number

function 
arr(){ 
    for(var 
i=1i<mc_zitate._totalframes+1i++){ 
        
framesArr.push(i); 
    } 
}; 

function 
starten(pObj:MovieClippTime:Number){ 
    
pObj._alpha 0
    if(
framesArr.length ==  0){ 
        
arr(); 
    } 
    var 
frameauswahl:Number random(framesArr.length); 
    
pObj.gotoAndStop(framesArr[frameauswahl]); 
     
fadeIn(pObjpTime); 
    
framesArr.splice(frameauswahl1); 
}; 

function 
fadeIn(pObj:MovieClippTime:Number){ 
    
pObj.onEnterFrame = function(){ 
        
this._alpha++; 
        if(
this._alpha >= 100){ 
            
delete this.onEnterFrame
            
id setInterval(fadeOutpTimethispTime); 
        } 
    } 
}; 

function 
fadeOut(pObj:MovieClippTime:Number){ 
    
clearInterval(id);
    
pObj.onEnterFrame = function(){ 
        
this._alpha--; 
        if(
this._alpha <= 0){ 
            
delete this.onEnterFrame
            
starten(thispTime); 
        } 
      } 
}; 

starten(mc_zitate2000);//2000 Millisekunden = 2 Sekunden lesepause 
Gruss Dec
__________________
FF Unterstützen! Erste Hilfe! häufig gestellten Fragen
...................... ............... ................................
Decrone ist offline   Mit Zitat antworten
Alt 03-03-2008, 18:17   #15 (permalink)
Neuer User
 
Benutzerbild von sirclueless
 
Registriert seit: Nov 2001
Ort: Deutschland
Beiträge: 30
Danke !! Vielen Dank.
sirclueless 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 12:10 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele