Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-11-2005, 10:24   #1 (permalink)
Neuer User
 
Benutzerbild von brandi
 
Registriert seit: Nov 2005
Ort: Aschersleben
Beiträge: 32
Script auf viele Instanzen erweitern

Hallo Leute,

Ich bin stolz ein Script hinbekommen zu haben, wo sich onRollOver und RollOut die Größe eines mc's langsam verkleinert und vergrößert.
Ich weiß das ist für die meisten nen Klax, aber ich fang grad an.

PHP-Code:
xga _root.mc._xscale;
yga _root.mc._yscale;
_root.mc.onRollOver = function()
{
    
_root.mc.onEnterFrame = function ()
    {
        
xgd _root.mc._xscale xga;
        
ygd _root.mc._yscale yga;
    
        if (
xgd <=50)
        {
            
_root.mc._xscale +=15 ;
        }
        if (
ygd <= 50)
        {
            
_root.mc._yscale +=15;
        }
    }
}
_root.mc.onRollOut = function()
{
    
_root.mc.onEnterFrame = function ()
    {
        
xgd _root.mc._xscale xga;
        
ygd _root.mc._yscale yga;
    
        if (
xgd >= 1)
        {
            
_root.mc._xscale -=15 ;
        }
        if (
ygd >= 1)
        {
            
_root.mc._yscale -=15;
        }
    }

Ich will das für ein paar Button (4 Stück) nutzen

Nun möchte ich aber nicht für alle 4 Button Instanzen dieses Script mehrmals schreiben müssen.
Ich habe gedacht ich setze das alles in eine for Schleife.
Hat aber leider nicht gefunzt.
Hab schon alles versucht aber ich verstehe nicht wieso!

Ich würde mich sehr über Hilfe freuen.
Und ich würde mich noch mehr freuen wenn ich die Hilfe auch verstehe;-)


Gruss Brandi

Geändert von brandi (25-11-2005 um 10:27 Uhr)
brandi ist offline   Mit Zitat antworten
Alt 25-11-2005, 12:05   #2 (permalink)
Neuer User
 
Registriert seit: Aug 2005
Ort: Potsdam
Beiträge: 35
Du mußt den verschiedenen MovieClips unterschiedliche Namen zuweisen und diese Namen anschließend in der Schleife verwenden.
Andre :o) ist offline   Mit Zitat antworten
Alt 25-11-2005, 12:13   #3 (permalink)
Neuer User
 
Benutzerbild von brandi
 
Registriert seit: Nov 2005
Ort: Aschersleben
Beiträge: 32
Genau das habe ich schon versucht.

Meine Instanzen sind mc1 - mc4

Mit:
for (i = 1; i <4; i++)
}
.
.
.

_root["mc" + i]...
}

geht es aber nicht.

Oder meinst Du eine andere Schleife?


Danke für die Hilfe
brandi ist offline   Mit Zitat antworten
Alt 25-11-2005, 14:44   #4 (permalink)
using namespace
 
Benutzerbild von artjom
 
Registriert seit: May 2002
Ort: Hamburg underground
Beiträge: 657
mach das nach folgendem prinzip:
Code:
function big(mc:MovieClip) {
    mc.onEnterFrame = function () 
    { 
        var xgd = mc._xscale - mc.xga; 
        var ygd = mc._yscale - mc.yga; 
        if (xgd <=50) 
        { 
            mc._xscale +=15; 
        } else if (ygd >50) delete mc.onEnterFrame;
        if (ygd <= 50) 
        { 
            mc._yscale +=15; 
        } 
    } 
}

mc1.xga = mc1._xscale; //ich nehme an du veränderst den scale wert auf der bühne, denn sonst ist diese zuweisung sinnlos, wenn xscale ist dann immer 100
mc1.yga = mc1._yscale;
big(mc1); //macht den mc1 groß
__________________
artjom.com -|- Melom
Einen PC beschleunigen? Klar, mit 9,81 m/s^2!
artjom ist offline   Mit Zitat antworten
Alt 25-11-2005, 16:43   #5 (permalink)
Neuer User
 
Benutzerbild von brandi
 
Registriert seit: Nov 2005
Ort: Aschersleben
Beiträge: 32
Hi Artjom,

Danke für Deine Hilfe.

Ich habe jetzt anstelle xyscale alles in width und height umgeschrieben.
Das kann ich dann irgendwie besser abfragen.

Trotz dem mal ein paar Fragen zu Deinem Skript weil mein AS einfach noch nicht so gut ist. Das sind genau die Fragen die ich immer habe.

1.
Wie würde das:
HTML-Code:
function big(mc:MovieClip)
bei mir genau aussehen?

Also "big" ist einfach Deine Bezeichnung ok, aber was kommt in die Klammer, der Instanzname.
(mc ?? : Movieclip??)

2.
Weshalb setzt Du Var vor die Variablen, geht das nicht auch ohne?

Ansonsten kann ich den Berechnungen folgen.

3. Ich kann mir schon denken, dass "big(mc1)" irgendwie aus der Funktion da ober hervorgegangen ist.
Aber wie das zustandekommt und wodurch dann alle 4 Instanzen angesprochen werden kann ich leider nicht ersehen.

Ich wäre Dir dankbar wenn Du das Skript für mich mal richtig auseinandernehmen könntest.
Ich möchte es nicht einfach nur kopieren sondern vor allen Dingen verstehen.


Danke

Gruß Brandi
brandi ist offline   Mit Zitat antworten
Alt 25-11-2005, 17:04   #6 (permalink)
using namespace
 
Benutzerbild von artjom
 
Registriert seit: May 2002
Ort: Hamburg underground
Beiträge: 657
Code:
function big(mc:MovieClip) { 
/*mc:MovieClip bedeutet, dass der parameter "mc" den typ MovieClip hat. du muss dieser funktion also
zwingend eine instanz eines Movieclips übergeben. wenn du zb. big("meineInstanz"); versuchst, 
wird es fehlschlagen. die bezeichnung mc hab ich mir ausgedacht, könnte genauso Wurst heißen. */
    mc.onEnterFrame = function () 
    {  //ich schreibe hier eine funktion, die mit der framerate deines flashfilms aufgerufen wird.
        var xgd = mc._xscale - mc.xga; //var oder nicht var .. das ist eine notation, also für die anwedung egal
        var ygd = mc._yscale - mc.yga; 
        if (xgd <=50) 
        { 
            mc._xscale +=15; 
        } else if (ygd >50) {
              /*hier lösche ich die funktion in der ich gerade drin bin. 
du hast es in deinem ersten beispiel nicht gemacht, 
dh. das bei dir diese funktion ohne ende in einer schleife lief. performancelastig */
delete mc.onEnterFrame;
}
        if (ygd <= 50) 
        { 
            mc._yscale +=15; 
        } 
    } 
}
ansprechen wirst du das letzendlich so:
Code:
function big(..) { //diese funktion unter _root (hauptzeitleiste) packen
....
}

for(var nI=1;nI<5;nI++) {
_root["mc"+nI].xga = _root["mc"+nI]._xscale;
_root["mc"+nI].yga = _root["mc"+nI]._yscale;
_root["mc"+nI].onRollOver = function() {_root.big(this); } 
}
__________________
artjom.com -|- Melom
Einen PC beschleunigen? Klar, mit 9,81 m/s^2!
artjom 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:19 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele