Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-02-2004, 11:10   #1 (permalink)
hmmmmm...
 
Benutzerbild von kenichi
 
Registriert seit: Feb 2004
Ort: deutschland
Beiträge: 112
Post MovieClip.FadeOut()

Ein froehliches hallo an alle,

ich habe vorhin ueberlegt wie ich am einfachsten einen MovieClip ein bzw. ausfaden kann (letzteres war mir wichtiger).
Da ich auf anhieb im FForum nichts gefunden habe poste ich hier mal mein ergebnis.

ActionScript:
  1. MovieClip.prototype.FadeOut = function(sec)
  2. {
  3.     var mc = this;
  4.     sec *= 100;
  5.    
  6.     var alfa = mc._alpha;
  7.     var val = alfa / sec;
  8.    
  9.    
  10.     var i=0;
  11.     function Tween()
  12.     {
  13.         i++;
  14.         alfa -= val;
  15.         mc._alpha = alfa;
  16.         if(i==sec*100)
  17.         {
  18.             clearInterval(timer);
  19.         }
  20.     }
  21.     var timer = setInterval(Tween,10);
  22. }

Vielleicht hat ja noch mal jemand Verwendung fuer sowas...

Wenn jemand eine schoenere Loesung hat, wuerde ich mich freuen die zu sehen. Man lernt ja nie aus...

Gruss,
kenichi
kenichi ist offline   Mit Zitat antworten
Alt 26-02-2004, 11:26   #2 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Ne schönere nicht, aber ne andere. Die arbeitet halt mit enterFrame, dafür kann man aber ein- und ausfaden mit einstellbarem Ziel-Alpha. Vielleicht zusammenschmeißen und teuer verkaufen...?
ActionScript:
  1. MovieClip.prototype.fade = function(targetAlpha, speed) {
  2.     var dir = this._alpha < targetAlpha ? 1 : -1;
  3.     this.onEnterFrame = function() {
  4.         this._alpha += speed * dir;
  5.         Math.round(-this._alpha + targetAlpha) * dir <= 0 ? delete this.onEnterFrame : null;
  6.     };
  7. };
__________________
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 26-02-2004, 19:36   #3 (permalink)
hmmmmm...
 
Benutzerbild von kenichi
 
Registriert seit: Feb 2004
Ort: deutschland
Beiträge: 112
@sonar

hab mir mal deinen tip zu herzen genommen...
kann ja nicht schaden eine universelle fader funktion zu haben.
hier nun das ergebnis:
ActionScript:
  1. MovieClip.prototype.Fade = function(target_alpha,seconds)
  2. {
  3.     var mc = this;
  4.     seconds *= 100;
  5.    
  6.     var diff = target_alpha - mc._alpha;
  7.     var val = diff / seconds;
  8.     var alfa = mc._alpha;
  9.    
  10.     var i=0;
  11.     function Tween()
  12.     {
  13.         i++;
  14.         alfa += val;
  15.         mc._alpha = alfa;
  16.         if(i==seconds) clearInterval(timer);
  17.     }
  18.     var timer = setInterval(Tween,10);
  19. }

gruss,
kenichi
kenichi ist offline   Mit Zitat antworten
Alt 26-02-2004, 20:33   #4 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Cool!

Kommt mir zwar so vor, als ob das etwas lange Sekunden wären, aber vielleicht liegt des auch an meiner eher lahmen Kiste...
__________________
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 27-02-2004, 21:12   #5 (permalink)
hmmmmm...
 
Benutzerbild von kenichi
 
Registriert seit: Feb 2004
Ort: deutschland
Beiträge: 112
sooo,
hab jetzt mal noch ein wenig dran gedreht und nu kann man zwischen zwei alphas hin und her faden auf unbestimmte zeit...
auch ne lustige sache.
ActionScript:
  1. MovieClip.prototype.Fader = function(first_alpha,second_alpha,seconds)
  2. {
  3.     var mc = this;
  4.     seconds *= 100;
  5.     mc._alpha = first_alpha;
  6.    
  7.     var diff = second_alpha - mc._alpha;
  8.     var val = diff / seconds;
  9.     var alfa = mc._alpha;
  10.    
  11.     var i=0;
  12.     function Tween()
  13.     {
  14.         i++;
  15.         alfa += val;
  16.         mc._alpha = alfa;
  17.         if(i==seconds)
  18.         {
  19.             i=0;
  20.             val *= -1;
  21.         }
  22.     }
  23.     var timer = setInterval(Tween,10);
  24.     return timer;
  25. }
hehe...

gruss,
kenichi
kenichi ist offline   Mit Zitat antworten
Alt 27-02-2004, 22:41   #6 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Mit der angegebenen Zeit klappt des aber noch nicht so ganz!
Über prüf doch mal, zB so:

ActionScript:
  1. MovieClip.prototype.Fade = function(target_alpha,seconds)
  2. {
  3.         var mc = this;
  4.         seconds *= 100;
  5.        
  6.         StartTime = getTimer();
  7.        
  8.         var diff = target_alpha - mc._alpha;
  9.         var val = diff / seconds;
  10.         var alfa = mc._alpha;
  11.        
  12.         var i=0;
  13.         function Tween()
  14.         {
  15.                 i++;
  16.                 trace(alfa);
  17.                 alfa += val;
  18.                 mc._alpha = alfa;
  19.                 if(i==seconds) {
  20.                     clearInterval(timer);
  21.                     EndTime = getTimer();
  22.                     Time = EndTime - StartTimer;
  23.                     trace("Benötigte Zeit: " + Time/1000 + " ||| Angegebene Zeit: " + seconds/100 + " (in Sekunden)");
  24.                 }
  25.         }
  26.         var timer = setInterval(Tween,10);
  27. };
  28.  
  29. MyMC.Fade(25, 3);
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 27-02-2004, 23:35   #7 (permalink)
hmmmmm...
 
Benutzerbild von kenichi
 
Registriert seit: Feb 2004
Ort: deutschland
Beiträge: 112
@johanness

tatsache, du hast recht!
der braucht bei eingestellten 3 sekunden fast ne sekunde laenger...
nunja, muss an der rechenzeit liegen, die durch berechnungen verloren geht.

als ich die funktion geschrieben hab, hab ich lediglich bedacht, dass die eingegebenen sekunden mal 100 gerechnet und das mal den intervall von ein hundertstel die entsprechende zeit ergibt.... (*satzueberdenk*)

ansich passt das, aber nur wenn man davon ausgeht, das alle rechenoperationen in einer zeit von <= null passieren... ;o)
naja, haengt halt wie so oft vom ausfuehrenden system ab, und ich denke, daran laesst sich auch nichts ruetteln.

trozdem dank fuer die info.

gruss,
kenichi
kenichi 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 01:24 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele