Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-03-2006, 12:21   #1 (permalink)
Art Director
 
Benutzerbild von tomtom69
 
Registriert seit: Sep 2002
Ort: Mülheim/Ruhr
Beiträge: 698
Question Dynamische Variablen & Parameterbenennung in/für Funktionen - häääää????

Moin,

so richtig steig ich noch nicht durch den Aufbau von Funktionen - vielleicht kann mir das einer hier mal auf eine einfache Art und Weise erklären. Bin für die Fla hilfe zu blöd

Es geht nur um die Grundsätze (keine fertigen Sachen). Ich komm mit Variblen in Funktionen (insbesondere dynamisch erstellte) nicht klar. Kann ich z.B. Variablen per Parameter definieren? - und wie spreche ich diese wieder an? Kann man Funktionen in Funktionen definieren? Und wann sind welche Vars wo verfügbar?
ActionScript:
  1. mein_func (param_var, param1, param2) {
  2. this.createEmptyMovieClip([param_var], x);
  3. this.[param_var]._x = param2;
  4. }

Wer kann einem "dummen" Kreativen mal in Sachen Scriptinggrundlagen unter die Arme helfen (ich weiß: programmierende Kreative sind furchbar ) ).

Many, many, many thx,

das Tom

P.S.
__________________
__________________________________________
"… blubb!"
tomtom69 ist offline   Mit Zitat antworten
Alt 08-03-2006, 12:27   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Ich komm mit Variblen in Funktionen (insbesondere dynamisch erstellte) nicht klar
Womit hast du denn speziell Probleme? Da könnte man sonst ein Buch zu schreiben...

Zitat:
Kann ich z.B. Variablen per Parameter definieren?
Parameter sind meist Variablen...

Zitat:
Kann man Funktionen in Funktionen definieren?
Unschön, du kannst weitere Funktionen außerhalb deiner Funktion auch ansprechen und so von mehreren anderen Funktionen nutzen.
  Mit Zitat antworten
Alt 08-03-2006, 12:37   #3 (permalink)
Achim Math.PI
 
Benutzerbild von bloba
 
Registriert seit: Jul 2001
Ort: cool Colonia
Beiträge: 11.642
PHP-Code:
mein_func = function (param_vartiefeparam1param2) {
    var 
this.createEmptyMovieClip(param_vartiefe);
    
t._x param1;
    
t._y param2;
};
// aufruf
mein_func("test"15050);
trace(test._y);
trace(test._x); 
__________________
gruß bloba

2 x onkel² b_d
bloba ist offline   Mit Zitat antworten
Alt 08-03-2006, 12:40   #4 (permalink)
Art Director
 
Benutzerbild von tomtom69
 
Registriert seit: Sep 2002
Ort: Mülheim/Ruhr
Beiträge: 698
wie soll ich sagen ...

... schau`n sie mal in dieses Script: Bilder faden per AS - komische "Fehlfunktion"

Zum Beispiel diese Variablen:
var fadespeed = 5;
var bildanzahl = 6;
var zufallszahl = random(bildanzahl);
_global.old_conti;
_global.ct = 1;

wie bekomm ich die als Parameter in die Func reload_x(), so daß ich die Func mehrmals hintereinander mit verschiedenen Parametern (ergo auch dann die Werte für die Variablen, die u.a. den Namen eines MC's festlegen) aufrufen kann.

Danke!

das Tom
__________________
__________________________________________
"… blubb!"
tomtom69 ist offline   Mit Zitat antworten
Alt 08-03-2006, 12:45   #5 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Du solltest deine Scripts mit trace-Befehlen im Testmodus testen lassen, dann weisst du meist auch, welchen Wert die Variablen haben, bzw. ob deine Objektpfade stimmen etc.

Zitat:
wie bekomm ich die als Parameter in die Func reload_x()
Du brauchst die nicht als Parameter übergeben, wenn du die in der Funktion mit dem richtigen vorangestellten Objektpfad nutzt, bspw. _level0.fadespeed.
  Mit Zitat antworten
Alt 08-03-2006, 12:48   #6 (permalink)
Art Director
 
Benutzerbild von tomtom69
 
Registriert seit: Sep 2002
Ort: Mülheim/Ruhr
Beiträge: 698
..

in der func wird die Stufe über die Var 'ct' gesetzt.

wenn ich also die func incl ihrer Parameter für diese Stufe deklarieren will, schreibe ich '_level[ct].fadespeed' ?
__________________
__________________________________________
"… blubb!"
tomtom69 ist offline   Mit Zitat antworten
Alt 08-03-2006, 12:53   #7 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Bring jetzt nicht die Level und die Tiefen durcheinander. Du arbeitest nur auf Level 0, da wird also nichts dynamisches dazugedichtet...

PHP-Code:
var fadespeed 5;
//...
function reload_x(xwertxscaysca) {
//...
trace("fadespeed="+fadespeed);
trace("_level0.fadespeed="+_level0.fadespeed);
tl["container"+ct]._alpha += _level0.fadespeed
Nicht raten, testen! Testmodus= STRG-ENTER
  Mit Zitat antworten
Alt 08-03-2006, 13:16   #8 (permalink)
Art Director
 
Benutzerbild von tomtom69
 
Registriert seit: Sep 2002
Ort: Mülheim/Ruhr
Beiträge: 698
gesagt - getan

... was sagt mir die Ausgabe - daß die Variablen global definiert sind und überall verfügbar sind?

__________________
__________________________________________
"… blubb!"
tomtom69 ist offline   Mit Zitat antworten
Alt 08-03-2006, 15:37   #9 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Wenn du kein "undefined" bekommen hast, ist die Variable zwar nicht global bekannt, aber eine Zeitleistenvariable, die der Hauptzeitleiste bekannt ist. MCs sind aber "gekapselte" Objekte, die diese Variable nur finden, wenn sie mit dem richtigen Objektpfad angesprochen werden.
  Mit Zitat antworten
Alt 08-03-2006, 15:42   #10 (permalink)
Art Director
 
Benutzerbild von tomtom69
 
Registriert seit: Sep 2002
Ort: Mülheim/Ruhr
Beiträge: 698
...

so weit - so gut

Nur: wenn ich die selbe Funktion im selben Frame in der selben zeitleiste aufrufe, dann kommen sich die Variablen doch in die Quere (müssen sie ja, sonst würde das Script ja richtig funzen (mit nur einem Aufruf geht's wunderbar)).

Deshalb zerbrech ich mir ja den Kopf (nur hat das bei mir wenig Sinn ), wie ich die Werte und Namen einiger Variablen als Parameter im Funktionsaufruf definieren kann.

Dann dürfte es doch keine Probleme mehr geben, oder?

THX,

das Tom
__________________
__________________________________________
"… blubb!"
tomtom69 ist offline   Mit Zitat antworten
Alt 08-03-2006, 15:44   #11 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Schieb mal die fla rüber, kann mit dem AS in deinem anderen Thread wegen der Zeilennummern nicht viel anfangen...
  Mit Zitat antworten
Alt 08-03-2006, 15:52   #12 (permalink)
Art Director
 
Benutzerbild von tomtom69
 
Registriert seit: Sep 2002
Ort: Mülheim/Ruhr
Beiträge: 698
bidde schön

... saugst Du hier: http://webshop.mtb-werbeagentur.com/...halter.fla.zip

ca. 350 KB

Viiiiielen Dank für deine Hilfe und Geduld

das Tom *auf den entscheidenene Tipp wartend*
__________________
__________________________________________
"… blubb!"
tomtom69 ist offline   Mit Zitat antworten
Alt 08-03-2006, 16:36   #13 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Ach so, das ist ja eigentlich nur ein aufgeblähter Preloader. Da würde ich dir zur MovieClipLoader-Komponente raten, die ist speziell beim Nachladen mehrerer Filme/Bilder sehr nützlich.

Ansonsten kannst du Funktionen entweder mit Parametern andere Werte zuweisen, bspw.:
PHP-Code:
wert1 1;
wert2 5;
meinefunktion(wert1,wert2);


wert1=3;
wert2=20;
meinefunktion(wert1,wert2);

function 
meinefunktion(w1,w2){
   
trace("w1="+w1);
   
trace("w2="+w2);

Oder die Funktion holt sich die Werte aus der Zeitleiste oder von globalen Variablen:
PHP-Code:
wert1 1;
wert2 5;
meinefunktion();


wert1=3;
wert2=20;
meinefunktion();

function 
meinefunktion(){
   
trace("wert1="+wert1);
   
trace("wert2="+wert2);

  Mit Zitat antworten
Alt 09-03-2006, 10:19   #14 (permalink)
Art Director
 
Benutzerbild von tomtom69
 
Registriert seit: Sep 2002
Ort: Mülheim/Ruhr
Beiträge: 698
mhhh

Moin,

Zitat:
Ach so, das ist ja eigentlich nur ein aufgeblähter Preloader
um den Preloader gehts net - ist ja schließlich auskommentiert, weil der überflüssig ist. Es geht um die Funktion reload_x() (zum Bilderfaden)

das Tom
__________________
__________________________________________
"… blubb!"
tomtom69 ist offline   Mit Zitat antworten
Alt 09-03-2006, 15:11   #15 (permalink)
Art Director
 
Benutzerbild von tomtom69
 
Registriert seit: Sep 2002
Ort: Mülheim/Ruhr
Beiträge: 698
Question Wer will noch mal - wer hat noch nicht ;)

Moin!

So, ich hab das Script mal so umgeschrieben, wie ich denke, daß es richtig seien könnte

PHP-Code:
// Standardbildpfad
var bildpfad "http://www.boats-house-club.de/links/flash/fla/test_random/pixflashran/bild";
//Funktion definieren - Start
//Parameter:    bildanzahl_var->  Anzahl Bilder in Ordner (Standardpfad)
//                fadespeed_var->    Geschwindigkeit überblenden
//                name_container -> Movieclipname des Behälters
//                container_tiefe -> Tiefe des MC Behälters
//                xwert        ->    x-Koordinate des MC Behälters
//                xsca        ->    x-Wert scalierung MC Behälter
//                ysca        ->    y-Wert scalierung MC Behälter
function bildfade_tom(bildanzahl_varfadespeed_varct_varname_containercontainer_tiefexwertxscaysca) {
    var 
bildanzahl bildanzahl_var;
    var 
fadespeed fadespeed_var;
    var 
nummer ct_var
    clearInterval
(SID);
    var 
behaelter_mc this.createEmptyMovieClip(name_container +nummercontainer_tiefe);
    
this[behaelter_mc+nummer].loadMovie(bildpfad +nummer +".jpg");
    
this[behaelter_mc+nummer]._alpha 0;
    
loader_funk = function() {
        if (
this[behaelter_mc+nummer].getBytesLoaded()>=4) {
            var 
gesamt this[behaelter_mc+nummer].getBytesTotal();
            var 
bereits this[behaelter_mc+nummer].getBytesLoaded();
            var 
Prozent Math.ceil((bereits/gesamt)*100);
            if (
prozent >= 100) {
                
this[behaelter_mc+nummer]._x xwert;
                
this[behaelter_mc+nummer]._xscale xsca;
                
this[behaelter_mc+nummer]._yscale ysca;
                
this[behaelter_mc+nummer]._alpha += fadespeed;
                if (
this[behaelter_mc+nummer]._alpha >= 100 && old_conti_mc._alpha <= 0) {
                    
old_conti_mc.unloadMovie();
                    var 
old_conti_mc this[behaelter_mc+nummer];
                    
clearInterval(loadID);
                    
nummer++;
                    
SID setInterval(bildfade_tom1000);
                }
                if (
nummer == (bildanzahl +1)) {
                    
nummer 1;
                }
            }
        };
        
loadID setInterval(loader_funk40);
    }
}
bildfade_tom(1,2,3,4,5,6,7,8,9);
trace(name_container);
trace(xsca); 
So, dachte ich zumindest, könnte ich dann die Variablen über die Parameter
der Funktion (bildfade_tom) definieren.

Nur leider gibt's immer (außer bei 'bildpfad') ein "undefined".
Wie muss ich 's richtig schreiben, damit die Variablen über die Funktionsparameter definiert werden?

HIIIIIIIILFE, pls

thx,

das Tom
__________________
__________________________________________
"… blubb!"

Geändert von tomtom69 (09-03-2006 um 15:15 Uhr)
tomtom69 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 05:25 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele