Zurück   Flashforum > Flash > Stuff

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-05-2008, 00:16   #1 (permalink)
Dumm lebt länger
 
Benutzerbild von Vampire's Party
 
Registriert seit: Jan 2004
Ort: Sachsen
Beiträge: 425
[STUFF] AS3 DynamicDrag - weiches Draggen von Sprites

Hi there,

ich bin heute, Wochenende sei Dank, endlich mal dazu gekommen meine DynamicDrag Klasse auf AS3 zu portieren. Herausgekommen ist eigentlich das gleiche wie zuvor, nur an der Handhabung und im Inneren hat sich natürlich was geändert.

Guggen
Laden

Beispiel:
ActionScript:
  1. import com.mocation.display.XSprite;
  2. import com.mocation.events.XSpriteEvent;
  3. import flash.geom.Rectangle;
  4.  
  5. function onOutsideRect( e:XSpriteEvent ):void
  6. {
  7.     trace( "you have thrown the XSprite object out of the stage" );
  8.     trace( "tweening inside..." );
  9. }
  10.  
  11.  
  12. var xs:XSprite = new XSprite();
  13. xs.graphics.beginFill( 0x0000AA );
  14. xs.graphics.drawRect( -25, -25, 50, 50 );
  15. xs.graphics.endFill();
  16. xs.limitation = new Rectangle( 0, 0, stage.stageWidth, stage.stageHeight );
  17. xs.useLimitation = true;
  18. xs.addEventListener( XSpriteEvent.OUTSIDE_RECT, onOutsideRect );
  19.  
  20. addChild( xs );
  21. xs.tweenTo( stage.stageWidth/2, stage.stageHeight/2 );

Usage:
ActionScript:
  1. /*
  2. * Sprite with extended drag functionality
  3. *
  4. *
  5. * PUBLIC METHODS:
  6. * - XSprite()
  7. *
  8. * - tweenTo( x_position:Number, y_position:Number ):void
  9. *   Tweens object to specified x/y choords using DynamicDrag base function
  10. *
  11. * - startDynamicDrag( e:MouseEvent = null ):void
  12. *   Starts dragging the object. Also alled by MOUSE_DOWN event
  13. *
  14. * - stopDynamicDrag( e:MouseEvent = null ):void
  15. *   Stops dragging the object
  16. *
  17. *
  18. * PUBLIC PROPERTIES:
  19. * - limitation:Rectangle
  20. *   [read-write] sets a limitation rectangle for dragging
  21. *
  22. * - useLimitation:Boolean
  23. *   [read-write] if true, the limitation rectangle is used
  24. *
  25. * - blur:Boolean
  26. *   [read-write] specifies the usage of the blur filter while dragging
  27. *
  28. * - shadow:Boolean
  29. *   [read-write] specifies the usage of the drop shadow filter while dragging
  30. *
  31. * - rotate:Boolean
  32. *   [read-write] set true for rotate the object while dragging
  33. *
  34. * - dragTarget:DisplayObject
  35. *   [read-write] specifies another object for retreiving mouse events.
  36. *       Use this property if you have any input components in
  37. *       the XSprite object itsself.
  38. *
  39. * THROWN EVENTS:
  40. * - XSpriteEvent.START_DRAG        -> drag started by pressing the mouse button
  41. * - XSpriteEvent.STOP_DRAG   -> drag stopped by releasing the mouse button
  42. * - XSpriteEvent.SCRIPT_TWEEN    -> beginning of script based tween using "tweenTo" method
  43. * - XSpriteEvent.TWEEN_STOPPED  -> tween stopped ( deletion of ENTER_FRAME event )
  44. * - XSpriteEvent.OUTSIDE_RECT    -> object was thrown out of the limitation rectangle. Also thrown by "tweenTo" method
  45. *
  46. */

Einen kleinen Fehler gibt es allerdings noch, den ich mir aber nicht erklären kann. Scheinbar wird in der Methode "doDynamicDrag" das ENTER_FRAME Event nicht sofort gelöscht und die Methode nochmals aufgerufen, bevor sie gelöscht wird. Ergo wird das Event XSpriteEvent.OUTSIDE_RECT mehrmals geworfen. Weiß jemand woran das liegt? Behoben.

Ansonsten viel Spaß damit
__________________
Blog

Geändert von Vampire's Party (26-05-2008 um 11:01 Uhr)
Vampire's Party ist offline   Mit Zitat antworten
Alt 26-05-2008, 10:30   #2 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Zitat:
Zitat von Vampire's Party Beitrag anzeigen
Einen kleinen Fehler gibt es allerdings noch, den ich mir aber nicht erklären kann. Scheinbar wird in der Methode "doDynamicDrag" das ENTER_FRAME Event nicht sofort gelöscht und die Methode nochmals aufgerufen, bevor sie gelöscht wird. Ergo wird das Event XSpriteEvent.OUTSIDE_RECT mehrmals geworfen. Weiß jemand woran das liegt?
Fehler liegt in der Klasse "XSprite" Zeile: 195
Zitat:
if ( flags.isset( SCRIPT_TWEEN | STOP_EXCITED ) && Math.abs( mouse_distance.y ) < 1 && Math.abs( mouse_distance.x ) < 1 )
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 26-05-2008, 11:01   #3 (permalink)
Dumm lebt länger
 
Benutzerbild von Vampire's Party
 
Registriert seit: Jan 2004
Ort: Sachsen
Beiträge: 425
Das wars, danke. Datei auf dem Server ist aktualisiert.
__________________
Blog
Vampire's Party ist offline   Mit Zitat antworten
Alt 27-05-2008, 13:18   #4 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
wenn man schnell klick-zieht dann bleibt die bewegung stehen und das papier
behält seinen blur. sieht iwie lustig aus
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi
_crypto_ ist offline   Mit Zitat antworten
Alt 07-08-2008, 19:16   #5 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
schick, aber ein kleiner Fehler ist mir aufgefallen:
Wenn man das Blatt an der linken unteren Ecke packt, dreht es sich beim ziehen in die falsche Richtung, sieht dann irgendwie unnatürlich aus.
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp 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:18 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele