Antworten auf deine Fragen:
Neues Thema erstellen

Knopf mit Zwei funktionen

moritzXIII

Nicht mehr ganz neu hier

Hey Leute,

ich hätte mal einen Frage. Ist bestimmt simpel aber ich steh da aufm Schlauch.

Ich will einen Button erstellen, bei dem, beim einmaligen Drücken sich ein Fenster aufbaut und beim zweiten Mal klicken wieder verschwindet.

Wie mach ich das?

Den MC, der sich aufbauen soll würde ich mit einer simplen Animation versehen (Alpha per Tweening von null auf 100). Per Knopfdruck spielt sich jetzt das Tweening ab. Entweder würde ich jetzt gerne, dass beim erneuten drücken des Buttons entweder die Timeline Rückwärts abspielt, oder aber ich pack das gleiche Tweening, blos umgekehrt ablaufend, dahinter. Dann müsste ich beim Zweiten Mal drücken im Script den neuen Keyframe eingeben zu dem er springen soll... sehe ich das richtig?

LG Moritz


Gruß Moritz
 

sokie

Mod | Web

AW: Knopf mit Zwei funktionen

|°|.|.|.|.|.|°|.|.|.|.|.|.|
Du kannst auch einfach deinen tween_mc so anlegen, dass du im ersten schlüsselbild der "hin"-Animation ein stop(); programmierst und am Anfang der "zurück"-animation.
in diesem Fall müsste dein Button so eine aktion bekommen:
Code:
button_mc.onRelease = function(){
tween_mc.play();
}
so läufts beim ersten klick "hin" beim nächsten "zurück"
 

Reb00t

Aktives Mitglied

AW: Knopf mit Zwei funktionen

Oder du löst das ohne Tween und machst das nur mit _visible!

PHP:
meinMC._visible = false;
meinMC.enabled = false

meinButton.onRelease = function(){
if(meinMC._visible = false){
meinMC._visible = true;
meinMC.enabled = true
} else {
meinMC._visible = false;
meinMC._enabled = false
}
 

Reb00t

Aktives Mitglied

AW: Knopf mit Zwei funktionen

meinste jetzt

PHP:
this.onEnterFrame = function(){
meinMC._alpha += 10;
}

?

Wenn ja: Ok das geht auch ^^ ist wahrscheinlich noch eleganter...

lg, reb00t
 

moritzXIII

Nicht mehr ganz neu hier

AW: Knopf mit Zwei funktionen

meinste jetzt

PHP:
this.onEnterFrame = function(){
meinMC._alpha += 10;
}

Hey,

danke für die Antwort. Aber welche Stelle des Scripts würdest du mit dieser überschreiben?

Ich habe nämlich dein vorher gepostetes Script probiert und habe Fehlermeldungen bekommen.

LG Moritz
 

Reb00t

Aktives Mitglied

AW: Knopf mit Zwei funktionen

Lösch dein Script und benutz folgendes:


PHP:
dein_mc._alpha = 0;
dein_btn.onRelease = function() {
    this.onEnterFrame = function() {
        if (dein_mc._alpha>=100) {
            this.onEnterFrame = function() {
                dein_mc._alpha -= 10;
                if (dein_mc._alpha == 0) {
                    delete this.onEnterFrame;
                }
            };
        }
        if (dein_mc._alpha<=100) {
            this.onEnterFrame = function() {
                dein_mc._alpha += 10;
                if (dein_mc._alpa == 100) {
                    delete this.onEnterFrame;
                }
            };
        }
    };
};
So das geht :) (Habs grade getestet!)

lg, Reb00t

Wichtig: Dein Button muss ein MC sein!

Edit sagt:

man kann das jetzt natürlich noch dynamischer machen falls du mehre Buttons + die dazugehörogen Fenster hast,
die sich auf die gleich Art und Weise öffnen lassen sollen. Das geht dann mit ner for schleife.
Wenn du das auch willst, dann sag bescheid, dann kann ich dir den code noch umbauen.
 
Zuletzt bearbeitet:

h_seldon

Aktives Mitglied

AW: Knopf mit Zwei funktionen

Hi Reb00t,

trace doch mal unmittelbar vor einem der delete this.onEnterFrame-Anweisungen irgendwas, z.B.:

PHP:
trace("lösche");

Da geschieht nichts, weil die Bedingung _alpha == 100 bzw. _alpha == 0 nie eintritt. Daher läuft das enterFrame endlos weiter. Wenn das Fenster eingeblendet wird und man lässt sich Zeit, um erneut darauf zu klicken, dauert es ebenfalls einige Zeit, bis es tatsächlich ausgeblendet wird. Das Problem mit _alpha ist, dass Flash zwar per AS Zugriff auf Werte zwischen 0 und 100% erlaubt, intern aber mit Werten zwischen 0 und 255 rechnet. Selbst wenn wir Ganzzahlen subtrahieren (addieren), erhalten wir als Ergebnis Fließkommawerte für die alpha-Eigenschaft.

Mögliche Lösung im konkreten Fenster-Beispiel:

PHP:
fenster._alpha = 0;
fenster.nAlpha = -5;
fenster.nVorzeichen = -1;
btn.onPress = function(){
	fenster.nAlpha *= fenster.nVorzeichen; 
	fenster.onEnterFrame = tweenAlpha;
}
function tweenAlpha(){
	this._alpha += this.nAlpha;
	if(this._alpha > 100){
		this._alpha = 100;
		delete this.onEnterFrame;
	}else if(this._alpha < 0){
		this._alpha = 0;		
		delete this.onEnterFrame;
	}
}
 

Reb00t

Aktives Mitglied

AW: Knopf mit Zwei funktionen

Ich brauch da nix tracen.
Das script funktoniert.

Habs ja selber ausprobiert.

lg, Reb00t.

p.s. falls sich doch n fehler eingeschlichen hat, belehr mich bitte :)
 

h_seldon

Aktives Mitglied

AW: Knopf mit Zwei funktionen

Der Fehler besteht darin, dass der Vorgang des Einblendens oder Ausblendens, sobald er einmal ausgelöst wurde, nicht von selbst aufhört, da keine der an die aktuelle Deckkraft gebundenen Abbruchbedingungen jemals zutrifft.

Blende ein, geh' einen Kaffee trinken und klicke einmal, um auszublenden. Es wird dann eine kleine Ewigkeit dauern, bis ausgeblendet wird. Das liegt schlicht daran, dass endlos weiter eingeblendet wird - auch über 100 hinaus, weil der Grenzwert nie exakt erreicht wird (s. meinen vorherigen post)

Viel Spass
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben