Zurück   Flashforum > Flash > Stuff

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 15-08-2007, 13:03   #1 (permalink)
ich lerne noch
 
Benutzerbild von Alpha.ONE
 
Registriert seit: Mar 2004
Ort: Konstanz
Beiträge: 267
[Stuff][AS3] Tween Klasse (SimpleTween)

Hallo,

ich habe mir in AS3 eine Tween Klasse geschrieben die besonder Platzsparend ist (alle benötigten Dateien haben 4,16kb, die veröffentlichte swf ist lediglich 1,94kb groß).
Nun möchte ich euch diese Klasse bzw. die Klassen zur Verfügung stellen.
Alle Dateien sind im Anhang.

Erstmal ein paar Methoden:

setFPS(val:uint):void => man kann die FPS einstellen(Standartwert = 31)
Anwendung: SimpleTween.setFPS = 50;

getFPS():uint => man kann die FPS natürlich auch auslesen
Anwendung: SimpleTween.getFPS = 50;

push({clip:Movieclip/Sprit/etc., prop:String, begin:Number, finish:Number, duration:uint, easing:Function (z.B:SimpleEasing.easeOut)}); => man fügt einen Tween hinzu. Man kann beliebig viele Tweens hinzufügen. Die Tweens werden nacheinander abgespielt (eigentlich ist das wie bei Fuse).

startTween():void => startet die Animation

stopTween():void => stoppt die Animation


Hier ist ein kleines Beispiel wie man die Klasse anwendet:

Zwei MovieClips mit den Instanznamen testclip und testclip2 befinden sich auf der Bühne.


CODE:

PHP-Code:
import de.ulrichraab.SimpleTween.*

var 
simpleTween:SimpleTween = new SimpleTween();
simpleTween.addEventListener(SimpleTweenEvent.TWEEN_FINISHtweenDone)
simpleTween.push({clip:testclipprop:"x"begin:testclip.xfinish:300duration:50easing:SimpleEasing.easeOut});
simpleTween.push({clip:testclip2prop:"x"begin:testclip.xfinish:300duration:50easing:SimpleEasing.easeOut});
simpleTween.startTween();

function 
tweenDone(evt:SimpleTweenEvent):void
{
    
trace(evt.type);
    
trace(evt.target);

ich bitte um Kommentare.

MfG Alpha und viel Spaß mit SimpleTween

Edit: Da ich derzeit keinen Webspace habe und deshalb kein Beispiel hochladen kann, würde es mich sehr freuen wenn das jemand von euch erledigen kann.

Edit2: Ich hab noch das Beispiel hochgeladen.
Angehängte Dateien
Dateityp: zip SimpleTween.zip (2,3 KB, 85x aufgerufen)
Dateityp: zip SimpleTweenBeispiel.zip (7,4 KB, 88x aufgerufen)
__________________
Auge um Auge - und die ganze Welt wird blind sein.
(Mahatma Gandhi)

Portfolio | deviantArt

Geändert von Alpha.ONE (15-08-2007 um 13:40 Uhr)
Alpha.ONE ist offline   Mit Zitat antworten
Alt 15-08-2007, 13:27   #2 (permalink)
undefined
 
Benutzerbild von mildesign
 
Registriert seit: Jul 2001
Ort: Stuttgart
Beiträge: 1.839
Schick. Muss ich mir bei Gelegenheit mal anschauen.
Danke.

Ich kann gerne etwas von meinen HdM Webspace zur Verfügung stellen.
__________________
mfg Frank
mildesign ist offline   Mit Zitat antworten
Alt 15-08-2007, 13:31   #3 (permalink)
ich lerne noch
 
Benutzerbild von Alpha.ONE
 
Registriert seit: Mar 2004
Ort: Konstanz
Beiträge: 267
Währe cool wenn du das Beispiel hochladen kannst damit man es nicht extra herunterladen und entpacken muss wenn man es sich anschauen will.

Ich bitte noch darum alle Bugs usw. zu posten.
Verbesserungsvorschläge sind sehr willkommen solange die einfache Anwendbarkeit und die Dateigröße nicht übermäßig strapaziert wird.
__________________
Auge um Auge - und die ganze Welt wird blind sein.
(Mahatma Gandhi)

Portfolio | deviantArt
Alpha.ONE ist offline   Mit Zitat antworten
Alt 15-08-2007, 13:36   #4 (permalink)
undefined
 
Benutzerbild von mildesign
 
Registriert seit: Jul 2001
Ort: Stuttgart
Beiträge: 1.839
Die FLA hat 0 Byte
EDIT: Up
Anschauen
__________________
mfg Frank

Geändert von mildesign (15-08-2007 um 13:41 Uhr)
mildesign ist offline   Mit Zitat antworten
Alt 15-08-2007, 13:40   #5 (permalink)
ich lerne noch
 
Benutzerbild von Alpha.ONE
 
Registriert seit: Mar 2004
Ort: Konstanz
Beiträge: 267
Ups mein Fehler.
Im Anhang ist eine die gehen müsste.
Angehängte Dateien
Dateityp: zip SimpleTweenBeispiel.zip (7,4 KB, 26x aufgerufen)
__________________
Auge um Auge - und die ganze Welt wird blind sein.
(Mahatma Gandhi)

Portfolio | deviantArt
Alpha.ONE ist offline   Mit Zitat antworten
Alt 15-08-2007, 18:19   #6 (permalink)
ich lerne noch
 
Benutzerbild von Alpha.ONE
 
Registriert seit: Mar 2004
Ort: Konstanz
Beiträge: 267
Hallo,

ich hab ein wenig an der Klasse gefeilt. Die benutzbarkeit ist jetzt wesentlich besser wie ich finde.

Und so wendet man Sie jetzt an:

PHP-Code:
import de.ulrichraab.SimpleTween.*
import fl.motion.easing.Quadratic

var simpleTween:SimpleTween = new SimpleTween();
simpleTween.push({clip:testclipx:300alpha:0.5duration:100easing:Quadratic.easeOut});
simpleTween.push({clip:testclip2x:300duration:50easing:Quadratic.easeIn});
simpleTween.startTween(); 
Ich hab die selbst geschriebenen easingEquations durch die Flash internen ersetzt. Man kann fast alle benutzen. Ausnahmen sind die die mehr als die üblichen vier Parameter time, begin ,change und duration haben.

Die Parameter im push({}) sind auch etwas anders geworden.

clip: der zu tweenende clip
duration: dauer des tweenings
easing: irgendeine easingEquation

Man kann beliebig viele propertys tweenen. Die schreibweise property:value (bsp: x:100, alpha:0, usw.) erinnert an Fuse.

Man kann folgende Events per addEventListener hinzufügen:

SimpleTweenEvent.TWEEN_START
SimpleTweenEvent.TWEEN_RUNNING
SimpleTweenEvent.TWEEN_FINISH


Ich bitte um Kommentare.
Alle Dateien sind im Anhang.

MfG Alpha und viel Spaß mit SimpleTween


Edit: Sollte jemand Bugs finden oder Verbesserungsvorschläge haben, bitte ich darum dies hier zu posten.

Edit: Ich konnte ein bisschen Webspace von einem Freund abzweigen um ein Beispiel hochladen zu können. Hier der Link.
Angehängte Dateien
Dateityp: zip SimpleTween.zip (2,2 KB, 14x aufgerufen)
Dateityp: zip SimpleTweenBeispiel.zip (7,6 KB, 25x aufgerufen)
__________________
Auge um Auge - und die ganze Welt wird blind sein.
(Mahatma Gandhi)

Portfolio | deviantArt

Geändert von Alpha.ONE (16-08-2007 um 18:11 Uhr)
Alpha.ONE ist offline   Mit Zitat antworten
Alt 17-08-2007, 19:06   #7 (permalink)
ich lerne noch
 
Benutzerbild von Alpha.ONE
 
Registriert seit: Mar 2004
Ort: Konstanz
Beiträge: 267
Hallo,


ich muss euch nun doch um Hilfe bitten.

Folgendes Problem:
Wenn man einem MovieClip bei MouseOver und bei MouseOut ein tweening hinzugefügt hat, wie das z.B. bei einem Menü üblich ist und man schnell mit der Maus über den Button hin und her fährt, sprengt das die komplette Animation. Genauer gesagt werden viele Tweenings gleichzeitig auf den selben Clip angewendet.

Ich hab mal ein Beispiel hochgeladen: LINK

Hier der Code des Beispiels:

PHP-Code:
import com.ulrichraab.simpletween.*;
import fl.motion.easing.Linear;
import flash.events.MouseEvent;


mClip.addEventListener(MouseEvent.MOUSE_OVERmOver);
mClip.addEventListener(MouseEvent.MOUSE_OUTmOut);

function 
mOver(evt:MouseEvent):void
{
    var 
ovtween:SimpleTween = new SimpleTween();
    
ovtween.push({clip:mClipalpha:0duration:5easing:Linear.easeNone});
    
ovtween.startTween();
}

function 
mOut(evt:MouseEvent):void
{
    var 
outween:SimpleTween = new SimpleTween();
    
outween.push({clip:mClipalpha:1duration:50easing:Linear.easeNone});
    
outween.startTween();

Jemand eine Idee wie man das Problem lösen kann? Ich komm seit heute Mittag nicht wirklich weiter.


MfG Alpha

Edit:
Problem gelöst.


Morgen gibts ein Update.

Habt ihr sonst noch irgendwelche Wünsche in Bezug auf die Funktionalität?
__________________
Auge um Auge - und die ganze Welt wird blind sein.
(Mahatma Gandhi)

Portfolio | deviantArt

Geändert von Alpha.ONE (17-08-2007 um 19:38 Uhr)
Alpha.ONE ist offline   Mit Zitat antworten
Alt 17-08-2007, 19:55   #8 (permalink)
Knopfmaler
 
Benutzerbild von Aerks
 
Registriert seit: Nov 2004
Ort: Essen
Beiträge: 227
Zitat:
Genauer gesagt werden viele Tweenings gleichzeitig auf den selben Clip angewendet. ... Jemand eine Idee wie man das Problem lösen kann?
Spontan fallen mir 2 Möglichkeiten ein.

Erstens: Du benutzt einfach immer dieselbe Tween-Instanz, statt bei jedem Rollover eine Neue zu generieren. Das hat den Vorteil, daß erst der eine Tween abläuft bevor dieselbe Instanz dann wiederverwendet wird um die nächste Animation abzuspielen. Wahrscheinlich musst du dafür ein wenig die Klasse anpassen. Keine Ahnung. Hab jetzt nicht in den Quellcode geschaut.

Zweitens: Du schaffst ein zentrales TweenManager-Singleton, was sich aller ablaufenden Animationen bewusst ist. Wenn dann in einer Tween-Instanz eine -sagen wir- lock-Eigenschaft pro MovieClip gesetzt ist, dann sorgt dieses Singleton dafür, daß jeder andere TweeningVersuch auf diesen Clip ignoriert/beendet wird bevor die erste Animationen nicht beendet ist.

Mit persönlich gefällt die Idee, daß eine zentrale Instanz alle Tweens letztendlich verwaltet besser, weil man dann auch so Späße wie "alle Animationen stoppen/langsamer laufen lassen etc.) leicht zu realisieren sind. Für die Benutzbarkeit ist das auch kein Hindernis. Wenn ein Tween neu instanziert wird, registriert er sich im Konstruktor einfach beim TweenManager-Singleton und alles wird gut. Man muss ich evtl. nur darum kümmern, daß tote Tween-Instanzen nicht die Liste im Manager vollmüllen.

Viele Gruesse
=:] Aerks
__________________
______________________________________________
www.rgblaster.de
Aerks ist offline   Mit Zitat antworten
Alt 17-08-2007, 21:04   #9 (permalink)
ich lerne noch
 
Benutzerbild von Alpha.ONE
 
Registriert seit: Mar 2004
Ort: Konstanz
Beiträge: 267
Ich finde die Idee mit dem TweenManager auch gut.
Meine Absicht ist es das ganze möglich klein und performant zu halten, deshalb hab ich das ganze unkomplizierter gelöst.

Allerdings begeistert mich die Idee das man alle Tweens irgendwo zentral verwalten und manipulieren kann. Vielleicht werde ich eine Möglichkeit einbauen den TweenManager optional zu benutzen. Das könnte dann so in etwa aussehen:

SimpleTween.useTweenManager = true;
var tweener:SimpleTween = new SimpleTween();


und dann hald während dem push({}) schauen ob der TweenManager aktiviert ist und dementsprechend handeln.

Das währe doch ganz cool.
Danke für den Ratschlag.


MfG Alpha
__________________
Auge um Auge - und die ganze Welt wird blind sein.
(Mahatma Gandhi)

Portfolio | deviantArt
Alpha.ONE ist offline   Mit Zitat antworten
Alt 18-09-2007, 18:24   #10 (permalink)
ich lerne noch
 
Benutzerbild von Alpha.ONE
 
Registriert seit: Mar 2004
Ort: Konstanz
Beiträge: 267
Hallo,

ich melde mich mal wieder in Bezug auf meine Tween Klasse SimpleTween.
Erstmal gibt es eine komplett überarbeitete, hoffentlich bessere Version.

Die Anwendung bleibt fast gleich.

Hier mal ein Beispiel:

PHP-Code:
public function someTween():void
{
    var 
tween:SimpleTween = new SimpleTween();
    
tween.add({clip:this.moviewidth:140height:140x:130y:130time:1ease:SimpleEasing.easeIn});
     
tween.start();

Was sich geändert hat ist:

tween.add({}); statt tween.push({});
tween.start(); statt tween.startTween();
tween.stop(); statt tween.stopTween();

bei den parametern hat sich hat sich der parameter duration und der parameter easing geändert. duration heist jetzt time und wird in Sekunden angegeben und easing heist jetzt ease.


Ich bin gerade am debuggen und am optimieren und wollte euch um Hilfe bitten. Ich werde später noch weitere Funktionalität hinzufügen aber nun soll erstmal das anständig laufen.
Was mich besonders interessiert ist die Performance. Ich würde mich freuen wenn ihr mir da Tipps geben könnt.

Alle benötigten Dateien sind im Anhang.


MfG Alpha


EDIT: Der TweenManager ist noch sehr unausgereift. Deshalb würde ich mich auch über Tipps und Ideen dazu sehr freuen.
Angehängte Dateien
Dateityp: zip SimpleTween.zip (2,9 KB, 40x aufgerufen)
__________________
Auge um Auge - und die ganze Welt wird blind sein.
(Mahatma Gandhi)

Portfolio | deviantArt

Geändert von Alpha.ONE (18-09-2007 um 18:37 Uhr)
Alpha.ONE ist offline   Mit Zitat antworten
Alt 19-09-2007, 12:09   #11 (permalink)
ich lerne noch
 
Benutzerbild von Alpha.ONE
 
Registriert seit: Mar 2004
Ort: Konstanz
Beiträge: 267
Hallo,

extra für euch habe ich folgende Seite eingerichtet auf der ihr den Source Code anschauen könnt und euch auch die neueste Version herunterladen könnt.

LINK


Ich hab auch ein Beispiel gebaut damit ihr euch ein Bild machen könnt.

LINK


Viel Spaß damit.


MfG Alpha


EDIT: Der TweenManager wird natürlich noch ein Singleton.
__________________
Auge um Auge - und die ganze Welt wird blind sein.
(Mahatma Gandhi)

Portfolio | deviantArt

Geändert von Alpha.ONE (20-09-2007 um 09:09 Uhr)
Alpha.ONE 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 19:19 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele