Zurück   Flashforum > Flash > Stuff

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 06-12-2006, 22:51   #1 (permalink)
Dumm lebt länger
 
Benutzerbild von Vampire's Party
 
Registriert seit: Jan 2004
Ort: Sachsen
Beiträge: 425
[Stuff] DynamicDrag - weiches draggen von Mcs

So, mal wieder ein kleiner Stuff-Thread von mir

Diesmal gehts darum Mcs weicher zu draggen. Man kann auswählen, welcher MC Events empfangen und welcher im Endeffekt gedragged werden soll. Das kann sehr nützlich sein, wenn man Formulare verwendet und/oder bestimmte Events des "Haupt-MCs" nicht überschreiben möchte.

Ansehen (Datei sample.html) und herunterladen: hier


Verwendung:
ActionScript:
  1. DynamicDrag (dgTarget:MovieClip[, dgEventTarget:MovieClip])


Übersicht über Eigenschaften und Methoden:
ActionScript:
  1. Public properties: 
  2. ------------------
  3. - [Boolean] DynamicDrag.rotate (default: false)
  4.  
  5.  
  6.  
  7. Public methods: 
  8. ---------------
  9. - [Void] setRectLimitation (rectLimit:Rectangle)
  10.     -> sets a limitation rectangle in which the MC can move
  11. - [Void] unsetRectLimitation ()
  12.     -> disables the limitation rectangle
  13. - [Void] tweenMovieClip (xTarget:Number, yTarget:Number)
  14.     -> tweens the MC to the given coords. Uses rotation if enabled

AS-Code des Beispiels:
ActionScript:
  1. import org.tools.DynamicDrag;
  2. import flash.geom.Rectangle;
  3.  
  4.  
  5. var limitationRect:Rectangle = new Rectangle (0, 0, Stage.width, Stage.height);
  6.  
  7. var loginFormDragger:DynamicDrag    = new DynamicDrag(login_form_mc, login_form_mc.background_mc);
  8. var squareDragger:DynamicDrag     = new DynamicDrag(square_mc);
  9.  
  10. loginFormDragger.rotate = true;
  11. loginFormDragger.setRectLimitation (limitationRect);
  12. squareDragger.setRectLimitation (limitationRect);

Viel Spaß damit
__________________
Blog

Geändert von Vampire's Party (07-12-2006 um 12:03 Uhr)
Vampire's Party ist offline   Mit Zitat antworten
Alt 07-12-2006, 08:33   #2 (permalink)
Pending…
 
Benutzerbild von psyk
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 3.866
Schönes Ding du, gleich mal auf die Platte geband.


Einzig eine Begrenzung des draggens könnte man noch einarbeiten.
__________________
:: Warum einfach, wenn's auch kompliziert geht! ::
psyk ist offline   Mit Zitat antworten
Alt 07-12-2006, 09:28   #3 (permalink)
Trennschleifer
 
Benutzerbild von bobo_k1
 
Registriert seit: Apr 2004
Ort: Hamburg
Beiträge: 1.282
schaut gut aus - im repository drin
__________________
Es gibt nur zwei Arten von Menschen die Hawaiihemden tragen: Schwuchteln und dicke fette Partylöwen. Und du siehst nicht aus wie ein dicker fetter Partylöwe!" - Homer J. Simpson
bobo_k1 ist offline   Mit Zitat antworten
Alt 07-12-2006, 10:00   #4 (permalink)
Dumm lebt länger
 
Benutzerbild von Vampire's Party
 
Registriert seit: Jan 2004
Ort: Sachsen
Beiträge: 425
Eine Begrenzung ist kein Problem. Eigentlich hatte ich das schon fertig, aber halt nicht als Klasse. Ich baue den Code im Laufe des Tages ein...
__________________
Blog
Vampire's Party ist offline   Mit Zitat antworten
Alt 07-12-2006, 10:38   #5 (permalink)
Achim Math.PI
 
Benutzerbild von bloba
 
Registriert seit: Jul 2001
Ort: cool Colonia
Beiträge: 11.642
nettes ding, da fehlt aber noch definitv der schatten drunter, wenn man klickt
__________________
gruß bloba

2 x onkel² b_d
bloba ist offline   Mit Zitat antworten
Alt 07-12-2006, 12:07   #6 (permalink)
Dumm lebt länger
 
Benutzerbild von Vampire's Party
 
Registriert seit: Jan 2004
Ort: Sachsen
Beiträge: 425
Ich habe den Code mal etwas erweitert. Man kann jetzt auswählen, ob eine Rotation angewendet werden soll und angeben, in welchem Rechteck sich der MC bewegen darf. Wird er außerhalb des Rechtecks gezogen, kommt er wieder zurück. Wäre ein Ansatz für eine Pink-Pong-Engine

Zudem ist die tweenMovieClip Methode jetzt öffentlich. Man kann den MC nun zu einer bestimmen Koordinate tweenen lassen. Auch mit Rotation - sofern eingestellt.

Der Post oben, die Beispieldatei und der Download wurden aktualisiert.

Zitat:
Zitat von bloba Beitrag anzeigen
nettes ding, da fehlt aber noch definitv der schatten drunter, wenn man klickt
Ein ganz kleiner Schatten ist drunter. Wer ihn findet, bekommt von mir ein Bonbon
__________________
Blog
Vampire's Party ist offline   Mit Zitat antworten
Alt 07-12-2006, 16:54   #7 (permalink)
Dumm lebt länger
 
Benutzerbild von Vampire's Party
 
Registriert seit: Jan 2004
Ort: Sachsen
Beiträge: 425
Ich habe noch ein paar Modifizierungen am Code vorgenommen:
- onMouseMove entfernt
- ein paar Fehler bei der Methode tweenMovieCLip() beseitigt

Frisst jetzt also weniger Performance...
__________________
Blog
Vampire's Party ist offline   Mit Zitat antworten
Alt 07-12-2006, 17:10   #8 (permalink)
Flash...
 
Benutzerbild von Scheidlf
 
Registriert seit: Dec 2005
Ort: Österreich
Beiträge: 961
Ich stimme den anderen zu. Nettes Teil!
Scheidlf ist offline   Mit Zitat antworten
Alt 07-12-2006, 23:21   #9 (permalink)
Pending…
 
Benutzerbild von psyk
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 3.866
Hier noch die gewünschte Shadow-Extentsion.
Angehängte Dateien
Dateityp: rar DynamicDrag.rar (2,1 KB, 183x aufgerufen)
__________________
:: Warum einfach, wenn's auch kompliziert geht! ::

Geändert von psyk (07-12-2006 um 23:23 Uhr)
psyk ist offline   Mit Zitat antworten
Alt 01-03-2007, 10:56   #10 (permalink)
Trennschleifer
 
Benutzerbild von bobo_k1
 
Registriert seit: Apr 2004
Ort: Hamburg
Beiträge: 1.282
ist immer noch ne geile Klasse - ich hab nur jetzt ein Problem.

Wie kann ich denn auf Objekte in dem gedraggten Bereich per onRelease zurückgreifen?

also so:
PHP-Code:
//der gesamte Container wird gedraggt
var dragger:DynamicDrag = new DynamicDrag(container);

//jetzt möchte ich einen MC innerhalb von container ansprechen

container.img1.onRelease machwas
das Drag-Verhalten ist aber immer vorrangig - was ist zu tun?
__________________
Es gibt nur zwei Arten von Menschen die Hawaiihemden tragen: Schwuchteln und dicke fette Partylöwen. Und du siehst nicht aus wie ein dicker fetter Partylöwe!" - Homer J. Simpson
bobo_k1 ist offline   Mit Zitat antworten
Alt 01-03-2007, 17:14   #11 (permalink)
Pending…
 
Benutzerbild von psyk
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 3.866
Ich wird sagen bastel dir einen seperaten Drag-Background (innerhalb
des Main-MC) und gibals Dragtarget gibst den Main-MC an.
__________________
:: Warum einfach, wenn's auch kompliziert geht! ::
psyk ist offline   Mit Zitat antworten
Alt 06-03-2007, 13:06   #12 (permalink)
Neuer User
 
Registriert seit: Nov 2002
Beiträge: 597
Erstmal: Klasse Teil. Sieht echt Hammer aus.

Ich habs mal eingebaut bei mir, funzt super, aber ich hab ein kleines Problem mit setRectLimitation. Hab folgenden Code (erstellt mit Flashdevelop)
PHP-Code:
import org.tools.DynamicDrag;
import flash.geom.Rectangle;
class 
Main
{
    static function 
main()
    {
       var 
limitationRect:Rectangle = new Rectangle (00200200);
        
_root.createEmptyMovieClip("mc_holder"1);
        var 
myimage:ImageViewer = new ImageViewer(_root.mc_holder1101020013000xFFFFFF);
        
myimage.loadImage("image.jpg");
        var 
dragger:DynamicDrag = new DynamicDrag(_root.mc_holder);
        
dragger.rotate true;
        
dragger.setRectLimitation(limitationRect);
        
    
        
    }

Ich kann das Ding aber nach Belieben auch über den Desktoprand hinaus ziehen...

Geändert von Randy (06-03-2007 um 13:08 Uhr)
Randy ist offline   Mit Zitat antworten
Alt 04-06-2007, 09:08   #13 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
wie kann ich genau Mausereignisse innerhalb der gedraggten mc auffangen?
funktioniert so irgendwie nicht:

ActionScript:
  1. import org.tools.DynamicDrag;
  2. import flash.geom.Rectangle;
  3.  
  4.  
  5. var limitationRect:Rectangle = new Rectangle (0, 0, Stage.width, Stage.height);
  6.  
  7.  
  8.  
  9. var foo = new DynamicDrag (mc1, klicker_mc);
  10. var foo1 = new DynamicDrag (mc2, klicker_mc);
  11.  
  12. foo.rotate = true;
  13. foo1.rotate = true;
  14.  
  15. foo.tweenMovieClip(100,100);
  16. foo1.tweenMovieClip(5,5);
  17.  
  18.  
  19. mc1.klicker_mc.onRelease = function() {
  20.     trace("hallo");
  21.     }
__________________
x 600.6
y 123.3
dante ist offline   Mit Zitat antworten
Alt 04-06-2007, 11:09   #14 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
ich habe versucht, eine funktion die beim klicken ausgeführt werden soll mit zu übergeben:

also dass man es so verwenden kann
var foo = new DynamicDrag (mc1, null, noname);
um zB die Funklion
function noname() {
trace("hallo "+ this);
}
beim klicken auf ein dragbares feld aufrufen kann.


Es scheitert aber wohl irgendwo hier
ActionScript:
  1. trace("func "+func);
  2.         trace("eventTarget "+eventTarget);
  3. //    eventTarget.transp.onRelease  = Delegate.create(this, func);
  4.         eventTarget.transp.onRelease    = func;
func wird als funktion erkannt, "transp" ist ein button der in jedem mc liegt, das target sollte auch stimmen

getraced wird das:
func [type Function]
eventTarget _level0.mc2

Die Funktion rührt sich aber nicht
Angehängte Dateien
Dateityp: zip dyndrag.zip (8,6 KB, 41x aufgerufen)
__________________
x 600.6
y 123.3
dante ist offline   Mit Zitat antworten
Alt 04-06-2007, 11:33   #15 (permalink)
Pending…
 
Benutzerbild von psyk
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 3.866
Der Release-Events wird hier vergeben.
PHP-Code:
eventTarget.onRelease Delegate.create(thismouseUp_handler); 
ergo, wenn überhaupt müsstest du dann deine Funktion in der mouseUp_handler-
Methode implimentieren.
PHP-Code:
// Entferne Listener, wenn die Maus losgelassen wird
private function mouseUp_handler ():Void 
{
    
func;
    
// .. 
BTW: Dein Release-Event wird aber vom dem Main-Release-Event.

Vielleicht solltest du nochmal genauer schildern was du erreichen willst.
__________________
:: Warum einfach, wenn's auch kompliziert geht! ::
psyk 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:22 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele