Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-06-2009, 10:52   #1 (permalink)
Gipfelstürmer
 
Benutzerbild von Manollo
 
Registriert seit: Mar 2002
Ort: Muc
Beiträge: 114
onEnterFrame löschen/aktivieren

Hallo liebe Flash-Gemeinde,

trotz langem Suchen, Lesen und Rumprobieren komme ich leider nicht darum herum, einen neuen Thread zum schon sehr häufig behandelten Thema "delete onEnterFrame" zu eröffnen.

Auf nachfolgendem Link findet ihr den momentanen Stand:
KLICK ME BABY
Es geht um das Submenü unter "Agentur".

Das Submenü selbst sowie und die dahinter/davor liegenden (Kreis)-Elemente werden in einer onEnterFrame-Function über "hittest" eingefahren/sichtbar gemacht bzw umgekehrt.

Hier der Code dazu:

PHP-Code:

//nachfolgendes fuer das Subnavi-Tweening bei RollOver und RollOut
import mx.transitions.*; 
import mx.transitions.easing.*; 



//Subnavi 1
dropdownMc1.onEnterFrame = function () {
if (
dropdownMc1.hitTest(_root._xmouse_root._ymousetrue)) {
    
//fuer das Ausklappen der Subnavi
    
tweenRollOver = new Tween (dropdownMc1"_y"Strong.easeOutdropdownMc1._y00.4true);
    
//fuer das Runterfahren des Tophighlights
    
tweenRollOver = new Tween (tophighlight1"_y"Strong.easeOuttophighlight1._y, -80.6true);
    
//fuer das Ausklappen des SubnaviBG
    
tweenRollOver = new Tween (subnavi1bg"_y"Strong.easeOutsubnavi1bg._y330.4true);
    
//fuer das Ausklappen des SubnaviFG
    
tweenRollOver = new Tween (subnavi1fg"_y"Strong.easeOutsubnavi1fg._y1000.6true);
    
//fuer das Sichtbarwerden des SubnaviBG
    
transparenz = new Tween(subnavi1bg"_alpha"Regular.easeInsubnavi1bg._alpha1000.3true);
    
//fuer das Sichtbarwerden des SubnaviFG
    
transparenz = new Tween(subnavi1fg"_alpha"Regular.easeInsubnavi1fg._alpha1000.2true);
}

else{
    
//fuer das Einklappen der Subnavi
    
tweenRollOut = new Tween (dropdownMc1"_y"Strong.easeOutdropdownMc1._y, -92.40.3true);
    
//fuer das Rauffahren des Tophighlights
    
tweenRollOut = new Tween (tophighlight1"_y"Strong.easeOuttophighlight1._y00.6true);
    
//fuer das Einklappen des SubnaviBG
    
tweenRollOut = new Tween (subnavi1bg"_y"Strong.easeOutsubnavi1bg._y, -10010true);
    
//fuer das Einklappen des SubnaviFG
    
tweenRollOut = new Tween (subnavi1fg"_y"Strong.easeOutsubnavi1fg._y, -100025true);
    
//fuer das Unsichtbarwerden des SubnaviBG
    
transparenz = new Tween(subnavi1bg"_alpha"Regular.easeOutsubnavi1bg._alpha00.3true);
    
//fuer das Unsichtbarwerden des SubnaviFG
    
transparenz = new Tween(subnavi1fg"_alpha"Regular.easeOutsubnavi1fg._alpha00.3true);
}

Was kann ich hier machen, damit das ganze den Prozessor nicht unnötig belastet, sprich nur so lange läuft bis alle Subnavi-Elemente vollständig vorhanden/sichtbar sind?

Ich dache mir, dass das mit "delete this.onEnterFrame" geht, wenn ich das aber innerhalb der "if hittest true"-Bereiches einbau, wird damit ja auch der "else"-Fall deaktiviert und das Teil klappt nicht mehr ein.

Das ganze kann man sicher etwas anders angehen, ich AS-Held hab bloß keine Ahnung!

DANKE schonmal für Eure Tipps!!!

Ciao,
Manollo
Manollo ist offline   Mit Zitat antworten
Alt 09-06-2009, 11:26   #2 (permalink)
Zero to Hero
 
Registriert seit: Apr 2007
Beiträge: 871
zuerst mal solltest du die eventmethode nicht global definieren.

schreibs lieber so:
PHP-Code:
import mx.utils.Delegate;

var 
deinMc:MovieClip dropdownMc1;

function 
oef() {
    if (
dropdownMc1.hitTest(_root._xmouse_root._ymousetrue)) {
        
//fuer das Ausklappen der Subnavi
        
tweenRollOver = new Tween (dropdownMc1"_y"Strong.easeOutdropdownMc1._y00.4true);
        
//fuer das Runterfahren des Tophighlights
        
tweenRollOver = new Tween (tophighlight1"_y"Strong.easeOuttophighlight1._y, -80.6true);
        
//fuer das Ausklappen des SubnaviBG
        
tweenRollOver = new Tween (subnavi1bg"_y"Strong.easeOutsubnavi1bg._y330.4true);
        
//fuer das Ausklappen des SubnaviFG
        
tweenRollOver = new Tween (subnavi1fg"_y"Strong.easeOutsubnavi1fg._y1000.6true);
        
//fuer das Sichtbarwerden des SubnaviBG
        
transparenz = new Tween(subnavi1bg"_alpha"Regular.easeInsubnavi1bg._alpha1000.3true);
        
//fuer das Sichtbarwerden des SubnaviFG
        
transparenz = new Tween(subnavi1fg"_alpha"Regular.easeInsubnavi1fg._alpha1000.2true);
    }

    else{
        
//fuer das Einklappen der Subnavi
        
tweenRollOut = new Tween (dropdownMc1"_y"Strong.easeOutdropdownMc1._y, -92.40.3true);
        
//fuer das Rauffahren des Tophighlights
        
tweenRollOut = new Tween (tophighlight1"_y"Strong.easeOuttophighlight1._y00.6true);
        
//fuer das Einklappen des SubnaviBG
        
tweenRollOut = new Tween (subnavi1bg"_y"Strong.easeOutsubnavi1bg._y, -10010true);
        
//fuer das Einklappen des SubnaviFG
        
tweenRollOut = new Tween (subnavi1fg"_y"Strong.easeOutsubnavi1fg._y, -100025true);
        
//fuer das Unsichtbarwerden des SubnaviBG
        
transparenz = new Tween(subnavi1bg"_alpha"Regular.easeOutsubnavi1bg._alpha00.3true);
        
//fuer das Unsichtbarwerden des SubnaviFG
        
transparenz = new Tween(subnavi1fg"_alpha"Regular.easeOutsubnavi1fg._alpha00.3true);
    } 
}

//dann kannst du steuern wie und wann du das Event greifen lassen willst und wann nicht :

if(deinStatus == true) {
    
deinMc.onEnterFrame oef;
}
else {
    
deinMc.onEnterFrame null;

__________________
Ein Tag an dem du nicht gelacht hast ist ein verschwendeter Tag.
Never Stop!

Mike
ingrimm ist offline   Mit Zitat antworten
Alt 09-06-2009, 11:54   #3 (permalink)
Gipfelstürmer
 
Benutzerbild von Manollo
 
Registriert seit: Mar 2002
Ort: Muc
Beiträge: 114
Mike, vielen Dank für Deine schnelle Hilfe!!!

Aber wäre es bei dem Aufbau nicht auch so, das die "else"-Variante ebenfalls abgeschaltet würde, sobald "meinStatus" nicht auf true steht?

Ich glaub ich check´s grade nicht so ganz, ich werde mir das ganze erstmal nochmal in Ruhe ansehen und weiterbasteln, Du hast mir auf jeden Fall sicher einen Schubs in die richtige Richtung gegeben.
Manollo ist offline   Mit Zitat antworten
Alt 09-06-2009, 13:00   #4 (permalink)
Gipfelstürmer
 
Benutzerbild von Manollo
 
Registriert seit: Mar 2002
Ort: Muc
Beiträge: 114
Ok, ich hab das jetzt mal so umgebaut, wie Du geschrieben hast.
Die Funktion ist da, jetzt scheitert es daran "meinStatus" zu definieren.
Ich hab den mal "fertig1" genannt.

So wie ich mir das (laienhaft) vorstelle, soll es folgendermaßen laufen:
Wenn Alpha von "subnavi1fg" (das sind die Kreiselemente vor der Subnavi, rechts unten) den Wert 100 hat, soll die EnterFrame-Funktion stoppen.

Mein Versuch diesen Wert zu ermitteln und dann die Funktion zu stoppen scheiterte jedoch kläglich.
Hier der Code:
PHP-Code:
if (subnavi1fg._alpha==100) {
    
fertig1 true;
}

if(
fertig1 == true) { 
    
dropdownMc1.onEnterFrame null

else { 
    
dropdownMc1.onEnterFrame oef

Und hier nochmal das: SWF.

Links im Film lasse ich den Alpha-Wert anzeigen. Dieser ändert sich nicht obwohl das MC ja offensichtlich nach und nach eingeblendet wird.
Daher müsste sich der Wert doch eigentlich aktualisieren oder?

Oder denke ich mir da Quatsch aus?

Unabhängig davon ist es doch so:
Sollte ich es schaffen, die Funktion auf "null" zu stellen, dann wird das ganze doch auch nicht mehr ausgeblendet weil eben die ganze Funktion stoppt. Dann gibt es doch auch kein "else" mehr. Oder? Oje oje, ich checks nicht...

Geändert von Manollo (09-06-2009 um 13:03 Uhr)
Manollo ist offline   Mit Zitat antworten
Alt 09-06-2009, 14:48   #5 (permalink)
Gipfelstürmer
 
Benutzerbild von Manollo
 
Registriert seit: Mar 2002
Ort: Muc
Beiträge: 114
ich nochmal

Auch wenns noch nicht so klappt, ich geb nicht auf.
Vielleicht hat ja der ein oder andere Lust und vor allem Zeit, nochmal seinen Senf dazu zu geben... wäre echt cool.


Ich hab jetzt folgendes gebastelt:
aktueller Stand

Während der EnterFrame-Funktion wird die Variable "fertig1" auf "true" gesetzt sobald die Funktion stoppen soll.
Und das hängt von _alpha von "sublinefg1" ab, habe ich "alpha1" genannt.
Beim Einblenden passiert das bei über 90%, beim Ausblenden bei unter 0.5%.

Soweit funktioniert das.
Vielleicht kann ich mir damit was bauen, womit ich das Stoppen und wieder Starten der Funktion steuern kann?

Meine Befürchtung ist halt immernoch, das dann ja auch innerhalb des "else"-Teiles alles "tot" ist und ich die Funktion nicht mehr zum laufen bekomme.

Hier der aktuelle Code:

PHP-Code:
import mx.transitions.*; 
import mx.transitions.easing.*; 

import mx.utils.Delegate

var 
dropdownMc1:MovieClip dropdownMc1;

var 
fertig1:Boolean false;

function 
oef() { 

    if (
dropdownMc1.hitTest(_root._xmouse_root._ymousetrue)) { 
        
//fuer das Ausklappen der Subnavi 
        
tweenRollOver = new Tween (dropdownMc1"_y"Strong.easeOutdropdownMc1._y00.4true); 
        
//fuer das Runterfahren des Tophighlights 
        
tweenRollOver = new Tween (tophighlight1"_y"Strong.easeOuttophighlight1._y, -80.6true); 
        
//fuer das Ausklappen des SubnaviBG 
        
tweenRollOver = new Tween (subnavi1bg"_y"Strong.easeOutsubnavi1bg._y330.4true); 
        
//fuer das Ausklappen des SubnaviFG 
        
tweenRollOver = new Tween (subnavi1fg"_y"Strong.easeOutsubnavi1fg._y1000.6true); 
        
//fuer das Sichtbarwerden des SubnaviBG 
        
transparenz = new Tween(subnavi1bg"_alpha"Regular.easeInsubnavi1bg._alpha1000.3true); 
        
//fuer das Sichtbarwerden des SubnaviFG 
        
transparenz = new Tween(subnavi1fg"_alpha"Regular.easeInsubnavi1fg._alpha1000.2true);

        
//Neusetzen von alpha1
        
alpha1 subnavi1fg._alpha;

        
//Festlegen von fertig1
        
if (alpha1 90) {
        
fertig1 true;
        }
        else { 
fertig1 false; }


    else{ 
        
//fuer das Einklappen der Subnavi 
        
tweenRollOut = new Tween (dropdownMc1"_y"Strong.easeOutdropdownMc1._y, -92.40.3true); 
        
//fuer das Rauffahren des Tophighlights 
        
tweenRollOut = new Tween (tophighlight1"_y"Strong.easeOuttophighlight1._y00.6true); 
        
//fuer das Einklappen des SubnaviBG 
        
tweenRollOut = new Tween (subnavi1bg"_y"Strong.easeOutsubnavi1bg._y, -10010true); 
        
//fuer das Einklappen des SubnaviFG 
        
tweenRollOut = new Tween (subnavi1fg"_y"Strong.easeOutsubnavi1fg._y, -100025true); 
        
//fuer das Unsichtbarwerden des SubnaviBG 
        
transparenz = new Tween(subnavi1bg"_alpha"Regular.easeOutsubnavi1bg._alpha00.3true); 
        
//fuer das Unsichtbarwerden des SubnaviFG 
        
transparenz = new Tween(subnavi1fg"_alpha"Regular.easeOutsubnavi1fg._alpha00.3true);

        
//Neusetzen von alpha1
        
alpha1 subnavi1fg._alpha;

        
//Festlegen von fertig1
        
if (alpha1 0.5) {
        
fertig1 true;
        }
        else { 
fertig1 false; }
           }  


//hier will ich steuern wie und wann du das Event stoppen soll, naemlich wenn fertig1=true ist. 
//nur so klappts wohl nicht :-) 

if(fertig1 == true) {
    
trace ("Ich bin fertig"); // nur zur Kontrolle
    
dropdownMc1.onEnterFrame null

else { 
    
dropdownMc1.onEnterFrame oef

Ciao & Danke,
Manuel
Manollo 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 23:18 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele