Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-01-2005, 18:46   #1 (permalink)
24/7 GeFlasht
 
Benutzerbild von MajorPain05
 
Registriert seit: Mar 2003
Ort: Hanau Area
Beiträge: 241
Alphafader Function

Hallo leute ^^
nein, ich suche keine alphafader function
sonder ich habe eine selber geschrieben, weil ich mich in AS fit machen will,
will ne neue site für mich machen und dort soll so gut wie ALLES per AS geschehen...
http://majorpain.funpic.de/rmd-designz/
is halt nix überwiegend großartiges, wie gesagt ich versuche mich zum ersten mal mit der realisierung eines projektes nur mit AS ^^
bin natürlich auch immer für vorschläge offen wenn jemand mal ne idee hat um etwas besser aussehen zu lassen, aber atm is eh noch nich viel zu sehen ^^

und nun wieder zu meiner function...
ich hab die geschrieben weil ich mehrere sachen ein und vielleicht auch mal wieder ausfaden sind, und functionen sind ja dazu da um solche abläufe zu vereinfachen (sich selbst die arbeit) zu vereinfache...
die function macht FAST alles was ich will... ich gebe ihr nur das kommando ein oder ausfaden, die geschwindigkeit und die adressierung des mc´s
wie gesagt es funktioniert, auf der site wird der drehende kreis damit gefadet... aber das was jetzt noch nicht geht und wo ich mal ne kleine hilfe bräuchte wäre ein upgrade meiner function das ich mehrere objekte auf einmal faden kann... also die function mehrmals aufrufen kann ohne das die sich gegenseitig stören....
hier ist mal der quellcode dazu

Code:
function alphafader(style, step, theMc) {
	trace("Alphafader Function wird gestartet");
	trace("verwendeter style: "+style);
	trace("verwendete geschwingigkeit: "+step);
	trace("verwendeter movieclip: "+theMc);
	trace("Dummy Movieclip wird erstellt");
	temp = random(999);
	_root.createEmptyMovieClip("dummy"+temp, 0);
	if (style == "fadein") {
		trace("Fadein des Movieclips "+theMc+" mit der Geschwindigkeit "+step+" wird gestartet");
		_root["dummy"+temp].onEnterFrame = function() {
			if (theMc._alpha != 100) {
				setProperty(theMc, _alpha, theMc._alpha+step);
				trace("Alphawert von "+theMc+":"+theMc._alpha);
			} else {
				trace("Fadein des Movieclips "+theMc+" ist abgeschlossen");
				removeMovieClip(_root["dummy"+temp]);
			}
		};
	}
	if (style == "fadeout") {
		trace("Fadeout des Movieclips "+theMc+" mit der Geschwindigkeit "+step+" wird gestartet");
		_root["dummy"+temp].onEnterFrame = function() {
			if (theMc._alpha>0) {
				setProperty(theMc, _alpha, theMc._alpha-step);
				trace("Alphawert von "+theMc+":"+theMc._alpha);
			} else {
				trace("Fadeout des Movieclips "+theMc+" ist abgeschlossen");
				removeMovieClip(_root["dummy"+temp]);
			}
		};
	}
}
guckts euch mal an, und postet mir mal bitte n paar vorschläge wie ich das verbessern könnte / mehrere objekte auf einmal faden kann...
lacht bitte nicht, bin noch ein rooke ^^
und falls jemand hier den code verbessert, ÜBERTREIBT ES BITTE NICHT !! nich das jetzt hier die funktionsgeilen flasher kommen und mir hier die überdimensionalden scripts posten ^^ muss des ja auch nachvollziehen können

also thx schonmal...
mfg
Major Pain aka RmD
MajorPain05 ist offline   Mit Zitat antworten
Alt 17-01-2005, 19:40   #2 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Sowas?
ActionScript:
  1. MovieClip.prototype.fader = function(p, r, s) {
  2.     this.onEnterFrame = function() {
  3.         this._alpha += p;
  4.         if ((s == true && this._alpha<=r) || (s == false && this._alpha>=r)) {
  5.             delete this.onEnterFrame;
  6.         }
  7.     };
  8. };
  9. mc1.fader(-5, 0, true);//ausfaden
  10. mc2.fader(+5, 100, false);//einfaden
  11.  
Angehängte Dateien
Dateityp: zip fade_proto.zip (2,2 KB, 80x aufgerufen)
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 20-01-2005, 15:23   #3 (permalink)
24/7 GeFlasht
 
Benutzerbild von MajorPain05
 
Registriert seit: Mar 2003
Ort: Hanau Area
Beiträge: 241
so simpel und trotzdem genial
mmmh, ich wusste nich das man das so machen kann...
da eröffnen sich ja grad total neue wege für meine ideen
thx thx thx !!
ich liebe dieses forum

EDIT:
hab wieder ein kleines problem...
also wenn ich das mit dem Movieclip.prototype.xxx erweiter ich doch die basisklasse der movieclips in meinem film...
also hab ich zu der fade funktion noch eine rotation funktion geschrieben, weil es ein paar hintergrundelemente geben soll die sich die ganze zeit drehen sollen...
jetzt allerdings funktioniert das nciht wirklich, ich denke mal weil sich die onEnterFrame funktionen der MCs überschreiben nach aufruf der funktion...
soll ich jetzt den code so umschreiben das die onEnterFrame functionen nciht auf dem entsprechendem mc liegen sonder auf dummys die ja dann wieder gelöscht werden? wie mach ich das am besten?

hier nochmal meine 2 funktionen die sich beißen wenn man beide aufruft...
PHP-Code:
//Rotation function für MC´s
MovieClip.prototype.rotator = function(rs) {
    
trace("Rotator gestartet für"+this);
    
this.onEnterFrame = function() {
        
this._rotation += rs;
    };
};

//Alphafader function für MC´s
MovieClip.prototype.fader = function(prs) {
    
trace("Fader funktion gestartet für"+this);
    
this.onEnterFrame = function() {
        
this._alpha += p;
        if (
== true && this._alpha<r) {
            
this._alpha 0;
        }
        if (
== false && this._alpha>r) {
            
this._alpha 100;
        }
        if ((
== true && this._alpha<=r) || (== false && this._alpha>=r)) {
            
delete this.onEnterFrame;
        }
    };
}; 

Geändert von MajorPain05 (20-01-2005 um 17:03 Uhr)
MajorPain05 ist offline   Mit Zitat antworten
Alt 31-01-2005, 09:28   #4 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 1
Hallo.
Bin zwar auch noch AS-Anfänger, aber vielleicht hatte ich da gerade eine gar nicht so schlechte Idee...

Wenn wir jetzt wissen, wie wir mehrere unterschiedliche MCs "gleichzeitig" ansprechen können, dann können wir im Prinzip ja auch durch Verschachtelung von MCs die Instanzen einzeln ansprechen.
Also so:

ActionScript:
  1. MovieClip.prototype.fader = function(p, r, s) {
  2.     this.onEnterFrame = function() {
  3.         this._alpha += p;
  4.         if ((s == true && this._alpha<=r) || (s == false && this._alpha>=r)) {
  5.             delete this.onEnterFrame;
  6.         }
  7.     };
  8. };
  9.  
  10. MovieClip.prototype.rotator = function(u) {
  11.     this.onEnterFrame = function() {
  12.         this._rotation += u;
  13.     };
  14. };
  15.  
  16. mc1.fader(-2, 0, true);//ausfaden
  17. mc2.fader(+2, 100, false);//einfaden
  18.  
  19. mc1.mc11.rotator(-2);//rotieren links rum
  20. mc2.mc22.rotator(+2);//rotieren rechts rum
  21.  

Funktioniert so auf jeden Fall...
(-> hab mal das .fla von RustyCake erweitert und angehängt)


sebudde

P.S. Mein erster Beitrag in diesem genialen Forum
Angehängte Dateien
Dateityp: zip fade_rotation_proto.zip (2,7 KB, 18x aufgerufen)

Geändert von sebudde (31-01-2005 um 09:38 Uhr)
sebudde ist offline   Mit Zitat antworten
Alt 27-02-2005, 03:19   #5 (permalink)
24/7 GeFlasht
 
Benutzerbild von MajorPain05
 
Registriert seit: Mar 2003
Ort: Hanau Area
Beiträge: 241
lange nicht mehr reingeschaut *g*
also funktionieren tut das, allerdings will ich nicht
unbedingt alles weiter verschachteln. jetzt bei 2 funktionen is das ja noch ok,
aber sobald ich mehrere protoype funktionen einbaue, muss ich ja am ende ein MC 100-fach verschachtelt haben um das die ganzen funktionen auf einmal zu verwenden....
hat jemand n gedanken anstoß ??
für die uhrzeit !! *g*
MajorPain05 ist offline   Mit Zitat antworten
Alt 27-02-2005, 08:16   #6 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Es ist ja sehr unwahrscheinlich das Du Deinen mc fadest, resized, andereFarbe, etc. und das alles mit einmal.
Sonst hätt da bestimmt so ein halbgestörter (nicht negativ gemeint) einen Prototypen entwickelt der dies bewerkstelligt (aber was noch nicht ist, kann ja noch werden ).
Ich denke, da musst Du Dir die Funktion anpassen, also so ne super-ich-kann-alles-aufeinmal-Funktion verfassen und diese dann aufrufen.
Soetwas wird dann aber auch leicht unübersichtlich, weil die dann durchaus (wenn der mc alles machen soll) an die 20 oder mehr Parameter hat .
Oder man baut (hat ich auch schon einmal), nen Prototypen den man als Parameten ein Array mitgibt.
In diese trägst Du dann soetwas ein
Bsp:
PHP-Code:
myArray] = "_alpha";
myArray] = 50;
myArray] = "_y"
myArray] = 258
Und in Deinem Prototypen rennste dann mit onEnterFrame durch bis alles fertig und deletest onEnterFrame (oh man, hört sich das geil an... *schwärm*)
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 27-02-2005, 08:23   #7 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Habs gefunden, müsste man vielleicht nochmal überarbeiten.
zB: die set-Function und anderes syntax-sinnlos gedöns....

PHP-Code:
function maniMcmcarrMcstep ) {
    var 
size = ( arrMc.length ) / 2;
    var 
arrMani = new Array( size );
    var 
0;
    var 
count 0;
    var 
eig;
    var 
eigW;
    for ( 
0sizei++ )
    {
        
eigW = eval( mc arrMc] );
        
arrMani] = ( eigW arrMc] ) / step;
        if( 
Math.roundeigW ) == Math.roundarrMc] ) ) count++;
    }
    if( 
count size )
    {
        
count 0;
        
mc.onEnterFrame = function() {
            if( 
count == size delete mc.onEnterFrame;
            
count 0;
            for( 
0sizei++ )
            {
                
eig mc arrMc];
                
eigW = ( eval( eig ) );
                if( 
Math.roundeigW ) != Math.roundarrMc] ) ) 
                {
                    if( ( 
arrMani] < ) && ( ( eigW arrMani] ) > arrMc] ) ) 
                    {
                        
seteigMath.roundarrMc] ) );
                        
count++;
                    } 
                    else if( ( 
arrMani] > ) && ( ( eigW arrMani] ) < arrMc] ) )
                    {
                        
seteigMath.roundarrMc] ) );
                        
count++;
                    } else {
                        
seteig, ( eigW arrMani] ) );
                    }
                    
updateAfterEvent();
                } else {
                    
count++;
                }
            }
        };
    }

das Array:
PHP-Code:
var arrKlaus = new Array();
arrKlaus] = "._alpha";
arrKlaus] = 25;
arrKlaus] = "._x";
arrKlaus] = 250;
//und hier der aufruf der funktion
maniMc(_root.mcarrKlaus20); 
So, ich hoffe ihr könnt damit was anfangen und es gibt einen der das Ding mal so richtig fertigmacht.
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 27-02-2005, 12:58   #8 (permalink)
24/7 GeFlasht
 
Benutzerbild von MajorPain05
 
Registriert seit: Mar 2003
Ort: Hanau Area
Beiträge: 241
hm.... hört sich natürlich nicht schlecht an, aber das is ja iweder ne ganz andere lösungmethode ich wäre lieber dafür das man das irgendwie so hinbekommt das jede aktion sich in ein anderes onenterframe schreibt... evtl. das..... das isses eigentlich.... jede funktion .... obwohl....
also praktisch wärs halt dann wenn man z.B. sagt das die onEnterFrame function
hier startet

_root.theMc.roator .....
_root.theMc.fader .....

also jede funktion auf einen leeren MC innerhalb des anzuwendenden MCs...
in den functionen selbst werden die MCs dann halt immer mit parent angesprochen...
hoffe ihr wisst was ich meine, ich bin grad erst aufgestanden... war nach meinem post noch zu lange im photoshop gefangen

Geändert von MajorPain05 (27-02-2005 um 13:18 Uhr)
MajorPain05 ist offline   Mit Zitat antworten
Alt 27-02-2005, 14:11   #9 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Na, dann ist es ja noch einfacher möglich .
Du nimmst einfach die onEnterFrame-Anweisungen aus Deinen Prototypen!
Dann erstellst Du einen mit einer onEnterFrame-Anweisung und in diesen sagst Du dann was der mc alles machen soll.

Nachteil, du musst dann wenn ein mc sich nur drehen soll und einer anderer sich zusätzlich auch noch bewegen soll 2 solche proto's schreiben.

Das ist jetzt mein Ansatz, geht bestimmt auch eleganter oder irgendwie anderst, aber es funtzt erst mal.

PHP-Code:
//Rotation function für MC´s 
MovieClip.prototype.rotator = function( rs 

        
this._rotation += rs
}; 

//Alphafader function für MC´s 
MovieClip.prototype.fader = function( pr) { 
        
this._alpha += p
        if ( ( 
s  &&  this._alpha <= ) || ( !s  &&  this._alpha >= ) ) 
        { 
            
delete this.onEnterFrame
        }  
}; 

MovieClip.prototype.doAll = function( prsrs )
{
    
this.onEnterFrame = function()
    {
        
this.rotatorrs );
        
this.faderpr);
    }
}

//oder der doAll-proto als Funktion
function doAllTomcprsrs )
{
    
mc.onEnterFrame = function()
    {
        
mc.rotatorrs );
        
mc.faderpr);
    }
}


mc.doAll( -250true25 );
//doAllTo( mc, -2, 50, true, 25 ); 
Würde das dann eh als Funktion schreiben, weil die ja nun echt nicht jeder mc braucht...

PS:
Warum hasten das Script von RustyCake so "verunstaltet", der funktioniert doch auch nicht so wie Du ihn umgeschrieben hast.
Der setzt doch den mc sofort auf 0 oder 100, da hätte man auch das nehmen können:
PHP-Code:
MovieClip.prototype.fader = function(prs) { 
    
trace("Fader funktion gestartet für"+this); 
    if ( 
this._alpha 0
    else 
this._alpha 100;

Ist vom Sinn her das gleiche (soweit ich das entziffern konnte).
__________________
ERROR: Signature is too large

Geändert von rendner[i] (27-02-2005 um 14:46 Uhr)
rendner[i] 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 08:02 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele