Anzeige

[AS3] Swipe Gesture

[AS3] - Swipe Gesture | PSD-Tutorials.de

Erstellt von DaFunsel, 28.08.2011.

  1. DaFunsel

    DaFunsel Guest

    Swipe Gesture
    Hallo zusammen.
    Ich bin mal wieder dabei ein wenig zu spielen.
    Mein Ziel ist es, eine einfache Swipe Funktion zu schreiben. Im Netz habe ich ein Tutorial gefunden. Dort wird ein MC erstellt ("square_mc"), zudem folgendes Script:
    Code (Text):
    1. import flash.ui.Multitouch;
    2. import flash.ui.MultitouchInputMode;
    3. Multitouch.inputMode = MultitouchInputMode.GESTURE;
    4.  
    5. square_mc.addEventListener(TransformGestureEvent.GESTURE_SWIPE , onSwipe);
    6. function onSwipe (e:TransformGestureEvent):void{
    7. if (e.offsetX == 1) {
    8. //User swiped towards right
    9. square_mc.x += 320;
    10. }
    11. if (e.offsetX == -1) {
    12. //User swiped towards left
    13. square_mc.x -= 320;
    14. }
    15. }
    Das funktioniert auf dem iPhone ganz gut. Das ist eine sehr einfache Anweisung. Dort wird nicht gesagt das es ein "smoother" Übergang zum nächsten Bild sein soll und das Ende nach links/rechts ist auch nicht definiert.

    Ich habe noch ein anderes Tutorial gefunden, das funktioniert bei mir nicht richtig gut und ist für meine Verhältnisse nicht ausreichend erklärt und nachvollziehbar (kann es sein, das es nicht richtig funktioniert, weil er das in CS5.5 und ich in CS5 geschrieben hat?):
    Code (Text):
    1. package  {
    2.    
    3.     import flash.display.MovieClip;
    4.     import flash.ui.Multitouch;
    5.     import flash.ui.MultitouchInputMode;
    6.     import flash.events.TransformGestureEvent;
    7.     import flash.events.Event;
    8.    
    9.    
    10.     public class Swipe extends MovieClip {
    11.        
    12.         private var currentTile:Number = 1;
    13.         private var totalTiles:Number = 4;
    14.         private var slideCounter:Number = 0;
    15.        
    16.        
    17.         public function Swipe() {
    18.            
    19.             if(Multitouch.supportsGestureEvents)
    20.             {
    21.                 init();
    22.             }else{
    23.                 trace("No Gestures");
    24.             }
    25.              
    26.         }
    27.         private function init():void
    28.         {
    29.             Multitouch.inputMode = MultitouchInputMode.GESTURE;
    30.             this.stage.addEventListener(TransformGestureEvent.GESTURE_SWIPE, handleSwipe);
    31.         }
    32.        
    33.         private function handleSwipe(event:TransformGestureEvent):void
    34.         {
    35.             if(event.offsetX == 1)
    36.             {
    37.                 if(currentTile > 1)
    38.                 {
    39.                     slideRight();
    40.                     currentTile--;
    41.                 }
    42.             } else if(event.offsetX == -1)
    43.             {
    44.                 if(currentTile < totalTiles)
    45.                 {
    46.                     slideLeft();
    47.                     currentTile++;
    48.                 }
    49.             }
    50.         }
    51.        
    52.         private function slideLeft():void
    53.         {
    54.             tiles.addEventListener("enterFrame", moveTilesLeft);
    55.         }
    56.         private function slideRight():void
    57.         {
    58.             tiles.addEventListener("enterFrame", moveTilesRight);
    59.         }
    60.        
    61.         private function moveTilesLeft(event:Event):void
    62.         {
    63.             tiles.x -= 33;
    64.             slideCounter++;
    65.            
    66.             if(slideCounter == 10)
    67.                {
    68.                    tiles.removeEventListener("enterFrame", moveTilesLeft);
    69.                    slideCounter = 0;
    70.                }
    71.            
    72.         }
    73.        
    74.         private function moveTilesRight(event:Event):void
    75.         {
    76.             tiles.x += 33;
    77.             slideCounter++;
    78.            
    79.             if(slideCounter == 10)
    80.                {
    81.                    tiles.removeEventListener("enterFrame", moveTilesRight);
    82.                    slideCounter = 0;
    83.                }
    84.         }
    85.     }
    86.    
    87. }
    88.  
    Dort ist der Übergang so wie ich ihn haben möchte (das Sliden).
    Zudem ist dort Anfang und Ende definiert. Beim Testen hängt er sich manchmal auf und ich kann weder vor noch zurück. Das mit den " tiles.x -= 33;" verstehe ich auch nicht ganz. Es wird gesagt, das dies der Freiraum von Bild zur Bühne im MC ist. Ich habe mein Bild der Größe angepasst und die selben Werte genommen. Beim hin und her Sliden werden die Bilder nicht mittig dargestellt, eher alles verschoben (nur das erste Bild stimmt).
    Wie macht man das denn, wenn man die Bilder als Vollbild haben möchte? Muss dann "tiles.x -= 0;"?

    Was für mich und auch evtl. für andere interessant sein könnte, kann man diese Anweisungen vereinfacht zusammenfassen?
    Ich bin wie schon oft geschrieben nicht wirklich fit in AS3. Eine Erklärung ist somit für mich sehr wichtig.

    Ich würde mich über eine Antwort sehr freuen.

    -->LG<--
     
    Zuletzt von einem Moderator bearbeitet: 28.08.2011
    #1      
  2. ad86

    ad86 Allrounder

    Dabei seit:
    23.01.2010
    Beiträge:
    578
    Geschlecht:
    männlich
    Software:
    MasterCollection CS4
    Kameratyp:
    Canon Eos 60d
    Swipe Gesture
    AW: Swipe Gesture

    Hi,

    vorweg, ich hab kein CS5 oder CS5.5 und auch kein iPhone zum Testen.

    Wann tritt das swipe-Ereignis auf? Während des swipes mehrmals oder nur einmal, wenn dieses erkannt wurde?

    Code (Text):
    1. import flash.ui.Multitouch;
    2. import flash.ui.MultitouchInputMode;
    3. Multitouch.inputMode = MultitouchInputMode.GESTURE;
    4.  
    5. var moveVal:Number=50;//Betrag pro Frame
    6. var imgCount:int=4;//Anzahl der Bilder
    7. var imgSize:int=320;//Groesse eines Bildes
    8. var gotoX:int=0;//Wohn bei einem Swipe gegangen werden soll
    9. var currentIndex:int=0;//Welches Bild angezeigt wird
    10. var gotoRight:Boolean=false;//OB swipe nach rechts oder nicht
    11. var gotoLeft:Boolean=false;//OB swipe nach links oder nicht
    12.  
    13.  
    14. myObject_mc.addEventListener(TransformGestureEvent.GESTURE_SWIPE , onSwipe);
    15.  
    16. [COLOR="red"]function checkParent(mcName:String, parent_mc:DisplayObject):MovieClip{
    17.    while (parent_mc.name!=mcName && parent_mc!=this.stage){
    18.       parent_mc=parent_mc.parent;
    19.    }
    20.    if (parent_mc==this.stage){
    21.       return null;
    22.    }
    23.    return parent_mc;
    24. }[/COLOR]
    25.  
    26. function onSwipe (e:TransformGestureEvent):void{
    27.    [COLOR="Red"]var mc:MovieClip=checkParent("myObject_mc", e.target);
    28.    if (mc==null){
    29.       return;
    30.    }[/COLOR]
    31.    if (e.offsetX == 1) {
    32.       if (currentIndex>0){
    33.          currentIndex--;
    34.          [COLOR="red"]animateToRight(mc);[/COLOR]
    35.       }
    36.    }
    37.    if (e.offsetX == -1) {
    38.       if (currentIndex<imgCount-1){
    39.          currentIndex++;
    40.          [COLOR="red"]animateToLeft(mc);[/COLOR]
    41.       }
    42.    }
    43. }
    44.  
    45. function animateToRight(obj:DisplayObject):void{
    46.    gotoRight=true;
    47.    gotoLeft=false;
    48.    obj.addEventListener(Event.ENTER_FRAME, moveObjHandler);
    49. }
    50.  
    51. function animateToLeft(obj:DisplayObject):void{
    52.    gotoLeft=true;
    53.    gotoRight=false;
    54.    obj.addEventListener(Event.ENTER_FRAME, moveObjHandler);
    55. }
    56.  
    57. function moveObjHandler(e:Event):void{
    58.    if (gotoLeft && !gotoRight){
    59.       if (e.target.x> -currentIndex*imgSize+moveVal){ //Wenn x-Position noch größer als aktueller Index*imgSize + moveVal, dann kann x-Position nochmal nach links
    60.          e.target.x-=moveVal;
    61.       }
    62.       else{
    63.          e.target.x= -currentIndex*imgSize;
    64.          gotoLeft=false;//Sonst darf die xPosition nicht weiter nach links gehen
    65.       }
    66.    }
    67.    if (gotoRight && !gotoLeft){
    68.       if (e.target.x< -currentIndex*imgSize-moveVal){//Wenn x-Position noch kleiner als aktueller Index*imgSize + moveVal, dann kann x-Position nochmal nach rechts
    69.          e.target.x+=moveVal;//Sonst darf die xPosition nicht weiter nach rechts gehen
    70.       }
    71.       else{
    72.          e.target.x=-currentIndex*imgSize;
    73.          gotoRight=false;
    74.       }
    75.    }
    76.    if (!gotoRight && !gotoLeft){//Wenn die XPosition weder nach links noch nach rechts, dann entferne EventListener
    77.       e.target.removeEventListener(Event.ENTER_FRAME,moveObjHandler);
    78.    }
    79. }
    80.  
    Das sollte eigentlich funktionieren. Zur Idee: Wenn swipe nach links, soll myObject solange nach links verschoben werden bis die x-Position kleiner als minX ist. Um die Animation zu starten gibt es zwei Möglichkeiten: 1. Über Tweens oder über einen Event.ENTER_FRAME-Handler(wie hier).

    Und beim zweiten Tutorial: keine Ahnung was currentTile und totalTiles sein soll. Aber egal, das obere Script sollte ja funktionieren, auch wenn nicht getestet.

    tiles.x -= 33; bedeutet (da es im ENTER_FRAME-Handler ist), das pro FRame die xPosition um 33 Einheiten nach links verschoben wird. Man kann es auch länger schreiben:
    tiles.x = tiles.x - 33; //also der aktuelle x-wert minus 33;

    MFG ad86
     
    Zuletzt bearbeitet: 04.09.2011
    #2      
  3. DaFunsel

    DaFunsel Guest

    Swipe Gesture
    AW: Swipe Gesture

    Hi.
    Danke für die Antwort.
    Also für mein Test möchte ich das Swipe-Ereignis dann haben, wenn ich mit meinen Fingern über den Touch streiche.
    Zu deinem Script:

    -Szene 1, Ebene 'AS', Bild 1, Zeile 18 1118: Implizite Umwandlung von einem Wert mit statischem Typ Object in einen möglicherweise nicht verwandten Typ flash.display:DisplayObject.

    -Szene 1, Ebene 'AS', Bild 1, Zeile 22 1118: Implizite Umwandlung von einem Wert mit statischem Typ Object in einen möglicherweise nicht verwandten Typ flash.display:DisplayObject.

    -->LG<--
     
    #3      
  4. ad86

    ad86 Allrounder

    Dabei seit:
    23.01.2010
    Beiträge:
    578
    Geschlecht:
    männlich
    Software:
    MasterCollection CS4
    Kameratyp:
    Canon Eos 60d
    Swipe Gesture
    AW: Swipe Gesture

    Hi,
    Das war eher die Frage, wie Flash es händelt. Auf dem iPhone (mit ObjC) ist das glaub ich eher ein Mix gewesen.
    EDIT hat sich erledigt. Das Event wird nur einmal gesendet (auch beim iPhone selbst)


    Sollte jetzt im Script (rote Schrift) behoben sein.

    MFG ad86
     
    Zuletzt bearbeitet: 28.08.2011
    #4      
  5. DaFunsel

    DaFunsel Guest

    Swipe Gesture
    AW: Swipe Gesture

    Da ist noch ein Fehler
    Code (Text):
    1. if (gotoRight && ![COLOR=Red]gotoLeftt[/COLOR]){
    So ganz werde ich da noch nicht schlau raus. Beim Testen kann ich den MC mit den vier 320x480 Bildern nur ein paar Pixel nach links/rechts schieben.
    Das heißt ja auch, dass das Ende vom Anfang nicht definiert wurde,oder?
    Ich will ja beim start das Anfangsbild und darf dann nur nach rechts swipen, weil wenn ich nach links swipe, ist der MC weg und komme nicht zurück. Das selbe am Ende.

    Könntest du mir bei Gelegenheit die anderen Anweisungen auch mit Kommentaren versehen?

    -->LG<--
     
    #5      
  6. ad86

    ad86 Allrounder

    Dabei seit:
    23.01.2010
    Beiträge:
    578
    Geschlecht:
    männlich
    Software:
    MasterCollection CS4
    Kameratyp:
    Canon Eos 60d
    Swipe Gesture
    AW: Swipe Gesture

    Hi,

    also nochmal zum klarstellen:

    Du musst minX und maxX ändern. Wenn Du eine init-Methode hast, kannst Du beides setzen:

    Code (Text):
    1. minX=-myObject_mc.width+myWidth; //myWidth ist die Breite des letzten Bildes
    2. maxX= 0;
    MFG ad86
     
    #6      
  7. DaFunsel

    DaFunsel Guest

    Swipe Gesture
    AW: Swipe Gesture

    Mhh.
    Nungut, dann werde ich da mal ein wenig mit basteln. Ich muss jetzt leider an die Arbeit. Evtl. melde ich mich heute Abend nochmal. Werde mir dann nochmal alles in Ruhe angucken, vill. verstehe ich ja etwas:)

    schonmal vielen dank.

    -->LG<--
     
    #7      
  8. DaFunsel

    DaFunsel Guest

    Swipe Gesture
    AW: Swipe Gesture

    Hi.

    Ich bekomme es nicht wirklich hin.
    Den Endpunkt nach links habe ich jetzt. Nach rechts ist es immer ein wenig zu viel, ca. 15px.
    Egal wieviel ich noch dazupacke/wegnehme, es geht nur zu viel nach rechts.
    Code (Text):
    1. var minX:Number=-myObject_mc.width+520; //myWidth ist die Breite des letzten Bildes
    2. var maxX:Number= 160;//maximale x-Position bei swipe rechts
    3. //Beides ist aber nicht exakt, hängt von movVal ab.
    4. var moveVal:Number=50;//Betrag pro Frame
    Auch wenn ich den Endpunkt nach rechts finden würde, habe ich die Zwischenschritte nicht.
    Ich habe ja in dem MC vier Bilder á 320x480 px. Wenn ich nach rechts swipe, möchte ich ja nicht gleich bis zum Ende, sondern das nächste Bild sehen. Vill. habe ich jetzt auch etwas in meiner Müdigkeit übersehen. Wenn es morgen nicht so spät wird, mache ich mich nochmal daran.
    Mal sehen ob es dann etwas gibt.

    -->LG<--
     
    Zuletzt von einem Moderator bearbeitet: 30.08.2011
    #8      
  9. ad86

    ad86 Allrounder

    Dabei seit:
    23.01.2010
    Beiträge:
    578
    Geschlecht:
    männlich
    Software:
    MasterCollection CS4
    Kameratyp:
    Canon Eos 60d
    Swipe Gesture
    AW: Swipe Gesture

    Hi,

    MIch wundert es, warum +520. Normalerweise müsste es +320 und nicht +520 sein, da jedes BIld von Dir 320px breit ist. Vorausgesetzt Das erste BIld in Deinem MC ist auf Position (0,0):

    Mein Fehler. Klar das Du nicht vom ersten zum letzten BIld sofort möchtest. Ich hab das Script oben angepasst (rote Schrift). Ich hoffe da ist jetzt kein Bug drin. Sonst muss ich wohl Schädlingsbekämpfung betreiben. ;)

    MFG ad86
     
    Zuletzt bearbeitet: 30.08.2011
    #9      
  10. DaFunsel

    DaFunsel Guest

    Swipe Gesture
    AW: Swipe Gesture

    Hi.
    Also das funktioniert 100%tig. Ich habe den MC nocheinmal angepasst das er auch wirklich auf x=0 ist. Beim testen muss ich manchmal 2x am Anfang/Ende swipen damit er reagiert, könnte das am "removeEventListener" liegen?
    Wofür genau steht denn eigentlich das "moveVal"? Für die BpS?
    Ich werde damit die Tage noch ein wenig spielen, wenn sonst noch was unklar ist, melde ich mich.
    Nochmals vielen Dank:)

    P.S.: Das Gift für die Krabbeltiere kannst du dir sparen ;)

    -->LG<--
     
    #10      
  11. ad86

    ad86 Allrounder

    Dabei seit:
    23.01.2010
    Beiträge:
    578
    Geschlecht:
    männlich
    Software:
    MasterCollection CS4
    Kameratyp:
    Canon Eos 60d
    Swipe Gesture
    AW: Swipe Gesture

    Hi,

    Sollte eigentlich nicht daran liegen.
    EDIT: Ich hab es selbst mal bei mir getestet. Natürlich ohne swipe, das gibt es ja nicht in CS4. Und da funktioniert alles.

    Mal halbwegs erklärt:
    Du führst einen Swipe nach links aus. In der Methode onSwipe wird es erkannt. Dort setzt er currentIndex um eins hoch, sofern er noch nicht das Ende (also Anzahl -1) der Bilder erreicht hat. Dann ruft er animateToLeft. Dort überprüft er, ob gotoLeft==true und gotoRight==false ist, was der Fall ist. Sollte die aktuelle x-Position des MC (also e.target) noch größer sein als der Minuswert mal der Gesamtbreite + der Breite des letzten Bildes, dann wird der MC weiter nach links bewegt. IN dem Fall, in dem die Bedingung nicht mehr stimmt, setzt er den MC auf den passenden x-Wert aus dem aktuellen Index (currentIndex) mal der Breite eines Bildes mal Minus, da wir ja nach links möchten. ZUdem wird gotoLeft auf false gesetzt. Da gotoRight ebenfalls false ist, ist die letzte Bedingung erfüllt, und er kann den EventListener löschen.

    Möglichkeiten zur Behebung wären:
    1. Gucken ob das Swipe-Event in der Methode onSwipe ankommt (durch ein trace-Befehl) und bei jedem Swipe gucken, ob in der Konsole der trace-Befehl ausgeführt wird. EDIT: Sollte hier dran liegen, da es bei mir ja funktioniert (mit BTN).
    2. Sollte das der Fall sein, gucken, wo er nicht sofort reagiert. Ebenfalls mit trace-Anweisungen.

    moveVal beschreibt den Wert, den der MC in jedem Frame sich weiter bewegt. Wenn Du die Framerate (in Flash unter Einstellungen, wenn nichts markiert ist) mal auf 10 oder so setzt, würdest Du sehen, wie der MC sich langsam nach rechts oder links bewegt.

    MFg ad86
     
    Zuletzt bearbeitet: 31.08.2011
    #11      
  12. DaFunsel

    DaFunsel Guest

    Swipe Gesture
    AW: Swipe Gesture

    Hi.
    War und bin die letzten/nächsten Tage sehr viel unterwegs.
    Mit dem Rest muss ich mich mal in Ruhe beschäftigen.
    Ich wollte nur nochmal was berichten:

    Beim Testen ist mir was ganz doofes aufgefallen. Ich habe meine Bilder durch MC´s ersetzt. Dort sind BTN´s und Grafiken drin. Eigentlich läuft auch alles, ich war nur ein wenig erschrocken als ich swipen wollte und durch Zufall über die BTN´s gestrichen habe. Auf einmal hat sich der BTN verschoben:p.
    Der Event wird irgendwie für "alles" (sprich: den MC + Inhalt) übernommen. Ich habe auch versucht alles in andere Symbole zu konvertieren oder sie als Rohdatei zu lassen.
    Leider kann ich immer wieder die BTN´s, Grafiken etc. swipen :)

    -->LG<--
     
    #12      
  13. ad86

    ad86 Allrounder

    Dabei seit:
    23.01.2010
    Beiträge:
    578
    Geschlecht:
    männlich
    Software:
    MasterCollection CS4
    Kameratyp:
    Canon Eos 60d
    Swipe Gesture
    AW: Swipe Gesture

    Hi,

    Wieso doof. Das ist ein Feature ;)

    Wie gesagt, ich kann es nicht testen, aber ich habe das Script oben geändert (rote Schrift) und es sollte nicht mehr passieren. Hoffe ich zu mindestens.
    Auch wenn mich es wundert, wenn Du nur einmal
    Code (Text):
    1. myObject_mc.addEventListener(TransformGestureEvent.GESTURE_SWIPE , onSwipe);
    geschrieben hast, dürfte es eigentlich nicht passieren.

    MFG ad86
     
    #13      
  14. DaFunsel

    DaFunsel Guest

    Swipe Gesture
    AW: Swipe Gesture

    Der erste Vorschlag ganz am Anfang funktioniert.
    Jetzt kann ich nur den MC swipen, die Fläche wo BTN´s und Grafiken sind, werden ja jetzt nicht mehr zum Swipen genommen, somit steht nur die freie Fläche in dem MC zur Verfügung. Ist es machbar, dass man sagt:
    Die komplette Fläche des zu swipenden MC´s steht zur Verfügung, der Inhalt kann aber nicht einzeln geswiped werden. Also so wie jetzt, nur das man eine Art Maske über dem MC hat, die als ganze Angriffsfläche gilt.

    -->LG<--
     
    #14      
  15. ad86

    ad86 Allrounder

    Dabei seit:
    23.01.2010
    Beiträge:
    578
    Geschlecht:
    männlich
    Software:
    MasterCollection CS4
    Kameratyp:
    Canon Eos 60d
    Swipe Gesture
    AW: Swipe Gesture

    Hi,

    sollte jetzt funktionieren. (Ist wieder die rote Schrift). Hoffe ich.

    MFG ad86
     
    Zuletzt bearbeitet: 04.09.2011
    #15      
  16. DaFunsel

    DaFunsel Guest

    Swipe Gesture
    AW: Swipe Gesture

    Owei:eek:
    Code (Text):
    1. [B]Szene 1, Ebene 'AS', Bild 1, Zeile 19    1118: Implizite Umwandlung von einem Wert mit statischem Typ Object in einen möglicherweise nicht verwandten Typ flash.display:MovieClip.
    2. [/B]
    Nochmal:
    Code (Text):
    1. Szene 1, Ebene 'AS', Bild 1, Zeile 23    1118: Implizite Umwandlung von einem Wert mit statischem Typ flash.display:DisplayObject in einen möglicherweise nicht verwandten Typ flash.display:MovieClip.
    2. Szene 1, Ebene 'AS', Bild 1, Zeile 27    1118: Implizite Umwandlung von einem Wert mit statischem Typ Object in einen möglicherweise nicht verwandten Typ flash.display:DisplayObject.
    3.  
     
    Zuletzt von einem Moderator bearbeitet: 04.09.2011
    #16      
  17. ad86

    ad86 Allrounder

    Dabei seit:
    23.01.2010
    Beiträge:
    578
    Geschlecht:
    männlich
    Software:
    MasterCollection CS4
    Kameratyp:
    Canon Eos 60d
    Swipe Gesture
    AW: Swipe Gesture

    Hi,

    sorry, hätte schon früher geantwortet, aber übersehen, dass es schon eine zweite Seite gibt. :D

    Code (Text):
    1. import flash.ui.Multitouch;
    2. import flash.ui.MultitouchInputMode;
    3. Multitouch.inputMode = MultitouchInputMode.GESTURE;
    4.  
    5. var moveVal:Number=50;//Betrag pro Frame
    6. var imgCount:int=4;//Anzahl der Bilder
    7. var imgSize:int=320;//Groesse eines Bildes
    8. var currentIndex:int=0;//Welches Bild angezeigt wird
    9. var gotoRight:Boolean=false;//OB swipe nach rechts oder nicht
    10. var gotoLeft:Boolean=false;//OB swipe nach links oder nicht
    11.  
    12. myObject_mc.addEventListener(TransformGestureEvent.GESTURE_SWIPE , onSwipe);
    13.  
    14. //Funktion ueberprueft, ob das DisplayObject mit dem Namen mcName in parent_mc, oder seinen parent-Object enthalten ist.
    15. function checkParent(mcName:String, parent_mc:DisplayObject):[COLOR="red"]DisplayObject[/COLOR]{
    16.    //So lange das DisplayObject mit dem Namen mcName nicht gefunden wurde UND man noch nicht auf das stage-Objekt gestoßen ist, führe die Schleife aus.
    17.    while (parent_mc.name!=mcName && parent_mc!=this.stage){
    18.       parent_mc=parent_mc.parent;//Neues parent_mc-Objekt ist das parent-Objekt von parent_mc
    19.    }
    20.    if (parent_mc==this.stage){
    21.       return null;//Sollte parent_mc das stage-Objekt sein, gib null zurueck
    22.    }
    23.    return parent_mc;//Sonst gib das Objekt mit dem Namen mcName zurueck
    24. }
    25.  
    26. function onSwipe (e:TransformGestureEvent):void{
    27.    var mc:[COLOR="Red"]DisplayObject[/COLOR]=checkParent("myObject_mc", [COLOR="Red"](e.target as DisplayObject)[/COLOR]);
    28.    if (mc==null){//Das Display-Objekt wurde nicht gefunden, also raus aus dieser Methode
    29.       return;
    30.    }
    31.    if (e.offsetX == 1) {
    32.       if (currentIndex>0){//Wenn currentIndex groesser 0, kann man immer noch nach rechts
    33.          currentIndex--;
    34.          animateToRight(mc);
    35.       }
    36.    }
    37.    if (e.offsetX == -1) {
    38.       if (currentIndex<imgCount-1){//Wenn currentIndex kleiner als imgCount-1, kann man immer noch nach links
    39.          currentIndex++;
    40.          animateToLeft(mc);
    41.       }
    42.    }
    43. }
    44.  
    45. //Wenn swipe nach rechts, setze die Boolean-werte und fuege den EventListener hinzu
    46. function animateToRight(obj:DisplayObject):void{
    47.    gotoRight=true;
    48.    gotoLeft=false;
    49.    obj.addEventListener(Event.ENTER_FRAME, moveObjHandler);
    50. }
    51.  
    52. //Wenn swipe nach links, setze die Boolean-werte und fuege den EventListener hinzu
    53. function animateToLeft(obj:DisplayObject):void{
    54.    gotoLeft=true;
    55.    gotoRight=false;
    56.    obj.addEventListener(Event.ENTER_FRAME, moveObjHandler);
    57. }
    58.  
    59. function moveObjHandler(e:Event):void{
    60.    if (gotoLeft && !gotoRight){
    61.       if (e.target.x> -currentIndex*imgSize+moveVal){ //Wenn x-Position noch größer als aktueller Index*imgSize + moveVal, dann kann x-Position nochmal nach links
    62.          e.target.x-=moveVal;
    63.       }
    64.       else{
    65.          e.target.x= -currentIndex*imgSize;
    66.          gotoLeft=false;//Sonst darf die xPosition nicht weiter nach links gehen
    67.       }
    68.    }
    69.    if (gotoRight && !gotoLeft){
    70.       if (e.target.x< -currentIndex*imgSize-moveVal){//Wenn x-Position noch kleiner als aktueller Index*imgSize + moveVal, dann kann x-Position nochmal nach rechts
    71.          e.target.x+=moveVal;//Sonst darf die xPosition nicht weiter nach rechts gehen
    72.       }
    73.       else{
    74.          e.target.x=-currentIndex*imgSize;
    75.          gotoRight=false;
    76.       }
    77.    }
    78.    if (!gotoRight && !gotoLeft){//Wenn die XPosition weder nach links noch nach rechts, dann entferne EventListener
    79.       e.target.removeEventListener(Event.ENTER_FRAME,moveObjHandler);
    80.    }
    81. }
    MFg ad86
     
    Zuletzt bearbeitet: 04.09.2011
    #17      
  18. DaFunsel

    DaFunsel Guest

    Swipe Gesture
    AW: Swipe Gesture

    :lol: Das kenne ich.

    Jetzt läuft alles. Abgefahren, hehe.
    Es ist nur gerade viel Input. Habe schon knapp 14 Stunden Arbeit hinter mir.
    Ich werde mich, wie schon geschrieben, irgendwann in den nächsten Tagen intensiver mit dem Projekt auseinandersetzen. Was total nett wäre, wenn du Zeit und Lust hast, wieder die Kommentare zu schreiben. Ich werde über die Tage erst einmal den Überblick verlieren und so kann ich auch versuchen das Script zu verstehen.
    Ich danke dir schonmal vielmals. ;)

    -->LG<--
     
    #18      
  19. ad86

    ad86 Allrounder

    Dabei seit:
    23.01.2010
    Beiträge:
    578
    Geschlecht:
    männlich
    Software:
    MasterCollection CS4
    Kameratyp:
    Canon Eos 60d
    Swipe Gesture
    AW: Swipe Gesture

    Hi,

    Sollte jetzt im Script (auf Seite 2) sein. Falls trotzdem noch eine Stelle unklar ist, einfach fragen.

    MFg ad86
     
    #19      
x
×
×