Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 8

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-12-2007, 13:57   #1 (permalink)
backToThe._roots
 
Benutzerbild von Blax_ed
 
Registriert seit: Feb 2003
Ort: Ebnat-Kappel [CH]
Beiträge: 1.571
AS Tween löschen

Hi,

Script funktioniert soweit tadellos. Wenn ich mit der Maus allerdings "Schnell" über den MC fahre - und er somit dass onRollOut-Event startet wenn das onRollOver-Event noch nicht fertig gelaufen ist - poppt der Button später wieder auf..

PHP-Code:
import mx.transitions.Tween;
import mx.transitions.easing.*;
function 
wabber(target:MovieClipxscale:Numberyscale:Numberduration:Numberseconds:Booleancallback:Function):Void {
    var 
tweenX:mx.transitions.Tween = new mx.transitions.Tween(target"_xscale"mx.transitions.easing.Elastic.easeOuttarget._xscalexscaledurationseconds);
    var 
tweenY:mx.transitions.Tween = new mx.transitions.Tween(target"_yscale"mx.transitions.easing.Elastic.easeOuttarget._yscaleyscaledurationseconds);
    
tweenX.onMotionFinished = function():Void  {
        
callback();
    };
}
mc.onRollOver = function() {
    
delete tweenX;
    
delete tweenY;
    
wabber(this1501501.5true);
};
mc.onRollOut = function() {
    
delete tweenX;
    
delete tweenY;
    
wabber(this100100.5true);
}; 
Wie kann ich denn die Bewegung löschen ?
__________________
Cheers,
Flow!
Blax_ed ist offline   Mit Zitat antworten
Alt 17-12-2007, 14:12   #2 (permalink)
ChronoGuard
 
Benutzerbild von SpecOps-12
 
Registriert seit: Mar 2002
Ort: Saarbrücken
Beiträge: 2.649
PHP-Code:
import mx.transitions.Tween;
import mx.transitions.easing.*;


function 
wabber(target:MovieClipxscale:Numberyscale:Numberduration:Numberseconds:Booleancallback:Function):Void {
    if (
tweenX) {
        
tweenX.stop();
    }
    if (
tweenY) {
        
tweenY.stop();
    }
    var 
tweenX:Tween = new Tween(target"_xscale"Elastic.easeOuttarget._xscalexscaledurationseconds);
    var 
tweenY:Tween = new Tween(target"_yscale"Elastic.easeOuttarget._yscaleyscaledurationseconds);
    
tweenX.onMotionFinished = function():Void  {
        
callback();
    };

Sollte gehn.
Wenn du die Tween-Klassen importierst, musst du ihre Pfade nicht jedes Mal nochmal vollständig angeben. Macht es etwas übersichtlicher (Außer, du arbeitest mit verschiedenen Tween-Klassen).
__________________
we will stop enhancing the truth in 3, 2, ...
SpecOps-12 ist offline   Mit Zitat antworten
Alt 17-12-2007, 14:21   #3 (permalink)
backToThe._roots
 
Benutzerbild von Blax_ed
 
Registriert seit: Feb 2003
Ort: Ebnat-Kappel [CH]
Beiträge: 1.571
Zitat:
Zitat von Weidler Beitrag anzeigen

Sollte gehn.
Wenn du die Tween-Klassen importierst, musst du ihre Pfade nicht jedes Mal nochmal vollständig angeben. Macht es etwas übersichtlicher (Außer, du arbeitest mit verschiedenen Tween-Klassen).
Er schon Weidler

mit dem mehrfachen importen haste recht..

gehen tuts leider trotzdem net.. habe auch mal versucht die tweenvariable zu löschen.. macht er auch nicht..

hier mal nen minibeispiel.. mit deinem script
wie gesagt einfach mal schnell über den button fahren...dann siehste was ich meine.
Angehängte Dateien
Dateityp: zip flas.zip (8,3 KB, 9x aufgerufen)
__________________
Cheers,
Flow!
Blax_ed ist offline   Mit Zitat antworten
Alt 17-12-2007, 14:25   #4 (permalink)
ChronoGuard
 
Benutzerbild von SpecOps-12
 
Registriert seit: Mar 2002
Ort: Saarbrücken
Beiträge: 2.649
Ähh, ich hatte da auch grad nen Denkfehler. Moment.

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

var 
tweenX:Tween;
var 
tweenY:Tween;

function 
wabber(target:MovieClipxscale:Numberyscale:Numberduration:Numberseconds:Booleancallback:Function):Void {
    if (
tweenX) {
        
tweenX.stop();
    }
    if (
tweenY) {
        
tweenY.stop();
    }
    
tweenX = new mx.transitions.Tween(target"_xscale"Elastic.easeOuttarget._xscalexscaledurationseconds);
    
tweenY = new mx.transitions.Tween(target"_yscale"Elastic.easeOuttarget._yscaleyscaledurationseconds);
    
tweenX.onMotionFinished = function():Void  {
        
callback();
    };

Und die Variablen löschen bringt nix. Das sind nur Referenzen, keine Instanzen.
__________________
we will stop enhancing the truth in 3, 2, ...

Geändert von SpecOps-12 (17-12-2007 um 14:26 Uhr)
SpecOps-12 ist offline   Mit Zitat antworten
Alt 17-12-2007, 14:34   #5 (permalink)
backToThe._roots
 
Benutzerbild von Blax_ed
 
Registriert seit: Feb 2003
Ort: Ebnat-Kappel [CH]
Beiträge: 1.571
Willste bei mir anfangen?

In der schönen Schweiz^^

Danke Dir mal wieder
__________________
Cheers,
Flow!
Blax_ed ist offline   Mit Zitat antworten
Alt 17-12-2007, 14:38   #6 (permalink)
backToThe._roots
 
Benutzerbild von Blax_ed
 
Registriert seit: Feb 2003
Ort: Ebnat-Kappel [CH]
Beiträge: 1.571
hmm

nur mal ne verständnisfrage:

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

var 
tweenX:Tween;
var 
tweenY:Tween;

function 
wabber(target:MovieClipxscale:Numberyscale:Numberduration:Numberseconds:Booleancallback:Function):Void {
    if (
tweenX) {
        
tweenX.stop();
    }
    if (
tweenY) {
        
tweenY.stop();
    }
    
tweenX = new mx.transitions.Tween(target"_xscale"Elastic.easeOuttarget._xscalexscaledurationseconds);
    
tweenY = new mx.transitions.Tween(target"_yscale"Elastic.easeOuttarget._yscaleyscaledurationseconds);
    
tweenX.onMotionFinished = function():Void  {
        
callback();
    };
}
mc.onRollOver = function() {
    
wabber(this1501501.5true);
};
mc.onRollOut = function() {
    
wabber(this1001001true);
};
mc2.onRollOver = function() {
    
wabber(this1501501.5true);
};
mc2.onRollOut = function() {
    
wabber(this1001001true);
};
mc3.onRollOver = function() {
    
wabber(this1501501.5true);
};
mc3.onRollOut = function() {
    
wabber(this1001001true);
};
mc4.onRollOver = function() {
    
wabber(this1501501.5true);
};
mc4.onRollOut = function() {
    
wabber(this1001001true);
};
mc5.onRollOver = function() {
    
wabber(this1501501.5true);
};
mc5.onRollOut = function() {
    
wabber(this1001001true);
}; 
wenn ich das gleiche auf mehrere mc anwenden will .. funzt das nicht.. weil ich ja sozusagen nur "ein" tweenobjekt habe.. richtig ?

was muss ich machen um mehrere gleichzeitg zum laufen zu bringen
__________________
Cheers,
Flow!
Blax_ed ist offline   Mit Zitat antworten
Alt 17-12-2007, 15:08   #7 (permalink)
ChronoGuard
 
Benutzerbild von SpecOps-12
 
Registriert seit: Mar 2002
Ort: Saarbrücken
Beiträge: 2.649
Tja, da ist guter Rat teuer.

Mir fallen drei Sachen ein:
Für jeden Button eigene Referenz-Variablen erstellen und die in den Parametern mitreichen, was natürlich furchtbar ist.

Eine Klasse für deine Buttons erstellen, so dass jeder Buttons als Klassen-Instanz angelegt wird (Dann hat jeder Button von vornherein seine eigenen Variablen).

Ne Tween-Klasse benutzen, die für komplexe Tweens besser geeignet ist (Tweener, Fuse).

PS: Übrigens hab ich festgestellt, dass meine if-Abfrage unsinn ist. Wenn, müsste es if (tweenX.isPlaying) heißen.

PPS: So gehts auch. Ich finds aber ebenfalls unschön:

PHP-Code:
import mx.transitions.Tween;
import mx.transitions.easing.*;
var 
home:MovieClip this;

function 
wabber(target:MovieClipxscale:Numberyscale:Numberduration:Numberseconds:Booleancallback:Function):Void {
    if (
target.tweenX.isPlaying) {
        
target.tweenX.stop();
    }
    if (
target.tweenY.isPlaying) {
        
target.tweenY.stop();
    }
    
target.tweenX = new mx.transitions.Tween(target"_xscale"Elastic.easeOuttarget._xscalexscaledurationseconds);
    
target.tweenY = new mx.transitions.Tween(target"_yscale"Elastic.easeOuttarget._yscaleyscaledurationseconds);
    
target.tweenX.onMotionFinished = function():Void  {
        
callback();
    };
}
mc1.onRollOver = function() {
    
wabber(this,150,150,1.5,true);
};
mc1.onRollOut = function() {
    
wabber(this,100,100,1,true);
};
mc2.onRollOver = function() {
    
wabber(this,150,150,1.5,true);
};
mc2.onRollOut = function() {
    
wabber(this,100,100,1,true);
}; 
__________________
we will stop enhancing the truth in 3, 2, ...

Geändert von SpecOps-12 (17-12-2007 um 15:12 Uhr)
SpecOps-12 ist offline   Mit Zitat antworten
Alt 17-12-2007, 15:28   #8 (permalink)
backToThe._roots
 
Benutzerbild von Blax_ed
 
Registriert seit: Feb 2003
Ort: Ebnat-Kappel [CH]
Beiträge: 1.571
Zitat:
Zitat von Weidler Beitrag anzeigen
Eine Klasse für deine Buttons erstellen, so dass jeder Buttons als Klassen-Instanz angelegt wird (Dann hat jeder Button von vornherein seine eigenen Variablen).
Jaaaaaah genau... Ich als Designer..

nagut.. sowas dachte ich mir schon fast.. ich glaube ich mache es dann der Zeit wegen auf de unschöne Art...

Danke Dir vielmals!
__________________
Cheers,
Flow!
Blax_ed ist offline   Mit Zitat antworten
Alt 18-12-2007, 14:10   #9 (permalink)
INSERT COIN
 
Benutzerbild von pacman.hgw
 
Registriert seit: May 2003
Ort: Hansestadt Greifswald
Beiträge: 1.715
Huhu ich muss mich da mal kurz miteinklinken weil das so ähnlich aussieht wie das was ich da gerade mache. Ich habe da nur eine kleine Frage:

Wo kommt denn das "isPlaying" her?
pacman.hgw ist offline   Mit Zitat antworten
Alt 18-12-2007, 14:40   #10 (permalink)
ChronoGuard
 
Benutzerbild von SpecOps-12
 
Registriert seit: Mar 2002
Ort: Saarbrücken
Beiträge: 2.649
Das kommt aus der Instanz der Twenn-Klasse und kann über deren Referenz-Variable abgerufen werden.
Aber nur über die.
Ne statische Funktion, die man befragen kann, ob gerade "irgendwas" tweent, gibts meiner Meinung nach in der flash-Tweenklasse nicht.
__________________
we will stop enhancing the truth in 3, 2, ...

Geändert von SpecOps-12 (18-12-2007 um 14:41 Uhr)
SpecOps-12 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 20:20 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele