Native Multitouch-bewegingen gebruiken in ActionScript 3.0

In deze zelfstudie leren we hoe u native multitouch-bewegingen kunt implementeren voor gebruik in uw toepassingen. Lees verder!


Eindresultaat voorbeeld

Laten we eens kijken naar het eindresultaat waar we naartoe zullen werken:

Opmerking: dit voorbeeld werkt alleen op Multitouch-apparaten (tablets, smartphones, aanraakschermcomputers en Multitouch-trackpads onder AIR).

Opmerking voor Android-gebruikers: Multitouch wordt niet uitgevoerd in de SWF die is ingesloten in een HTML-pagina in een Android-browser, maar de brondownload bevat wel een APK die u kunt gebruiken om deze uit te checken. (Houd er rekening mee dat de APK alleen bedoeld is om de bewegingen zelf snel te demonstreren en niet helemaal correct wordt weergegeven.)

U kunt knijpen om te zoomen, draaien om te draaien en vegen om de afbeelding te wijzigen. Bekijk de videodemo als u het voorbeeld op uw apparaat niet kunt testen:


Stap 1: Kort overzicht

We gebruiken de ingebouwde Multitouch-ondersteuning die is ingebouwd in de Flash Player om een ​​op bewegingen gebaseerde afbeeldingsapplicatie te maken.


Stap 2: Instellingen voor Flash-document

Start Flash en maak een nieuw document. Stel de stage-grootte in op 600x300 px en de framesnelheid op 24 fps.


Stap 3: Interface

De interface zal heel eenvoudig zijn, alleen een afbeelding in de fase die vervolgens door de bewegingen wordt aangepast.


Stap 4: Verkrijg enkele afbeeldingen

We hebben enkele afbeeldingen nodig om onze applicatie te testen, ze uit uw persoonlijke verzameling te kiezen of een paar te downloaden om te testen.

Dit zijn de afbeeldingen van de demo, verkregen van Flickr, allemaal met een Creative Commons-licentie.

Gras 01 van 100kr

diepe impact op de planeetkleur door spettacolopuro

Yosemite: herfstkleuren door tibchris

Bloem door Antonio Manchado


Stap 5: Exporteren voor ActionScript

Converteer een van de afbeeldingen naar een filmclip en voeg de rest van de afbeeldingen toe aan die clip in verschillende kaders. Geef de clip een naam SlideItem en markeer de Exporteren voor ActionScript doos.


Stap 6: TweenNano

We gebruiken een andere tween-engine dan de standaard in Flash, dit verhoogt de prestaties en is gemakkelijker in gebruik.

Je kunt TweenNano downloaden van de officiële website.


Stap 7: Nieuwe ActionScript-klasse

Maak een nieuwe ActionScript 3.0-klasse (Cmd + N) en sla deze op als Main.as in je klasmap.


Stap 8: klassestructuur

Maak uw standaard klassenstructuur om te beginnen met het schrijven van uw code.

 pakket import flash.display.Sprite; public class Hoofd breidt uit openbare functie Main (): void // constructor code

Stap 9: Vereiste klassen

Dit zijn de klassen die we moeten importeren voor onze klas om te werken, de importeren richtlijn maakt extern gedefinieerde klassen en pakketten beschikbaar voor uw code.

 import flash.display.Sprite; import flash.display.MovieClip; import flash.ui.Multitouch; import flash.ui.MultitouchInputMode; import flash.events.TransformGestureEvent; import com.greensock.TweenNano; import com.greensock.easing.Strong;

Stap 10: Variabelen

Dit zijn de variabelen die we zullen gebruiken, lees de opmerkingen in de code om meer over hen te weten te komen.

 privé var slideItem: SlideItem; // Het object dat wordt beïnvloed door de bewegingen private var tempContainer: Sprite; // Een lege sprite die het dia-item opslaat

Stap 11: Constructor

De constructor is een functie die wordt uitgevoerd wanneer een object wordt gemaakt op basis van een klasse, deze code is de eerste die wordt uitgevoerd wanneer u een exemplaar van een object maakt of wordt uitgevoerd met behulp van de documentklasse.

Het voert de nodige acties uit om de applicatie te starten.

 public final function Main (): void // Code

Stap 12: Schakel gebareninvoer in

Deze regel vertelt de Flash Player om de multi-touch-modus te identificeren voor de afhandeling van aanraak- en gebarengebeurtenissen.

 Multitouch.inputMode = MultitouchInputMode.GESTURE;

Lees hier meer over op help.adobe.com.


Stap 13: Verschuif het item

Laten we de afbeeldingen plaatsen die reageren op de gebarengebeurtenissen.

 slideItem = nieuwe SlideItem (); / * Voorkomt dat het beeld verandert * / slideItem.stop (); / * Centreer de afbeelding * / slideItem.x = stage.stageWidth * 0.5; slideItem.y = stage.stageHeight * 0.5; addChild (slideItem); luisteraars ('add', slideItem); // zie de volgende stap

Stap 14: luisteraars toevoegen

Met deze functie worden de gebarenlisteners toegevoegd of verwijderd, afhankelijk van de opgegeven parameter.

 private final-functie luisteraars (actie: String, doel: Sprite): void if (action == 'add') target.addEventListener (TransformGestureEvent.GESTURE_ZOOM, onZoom); target.addEventListener (TransformGestureEvent.GESTURE_ROTATE, onRotate); target.addEventListener (TransformGestureEvent.GESTURE_PAN, onPan); target.addEventListener (TransformGestureEvent.GESTURE_SWIPE, onSwipe);  else target.removeEventListener (TransformGestureEvent.GESTURE_ZOOM, onZoom); target.removeEventListener (TransformGestureEvent.GESTURE_ROTATE, onRotate); target.removeEventListener (TransformGestureEvent.GESTURE_PAN, onPan); target.removeEventListener (TransformGestureEvent.GESTURE_SWIPE, onSwipe); 

Dit betekent dat de luisteraars () functie die in de vorige stap is genoemd, voegt gebeurtenislisteners toe aan de glijdende afbeelding, zodat deze luistert naar zoomen, pannen, draaien en vegen met gebaren.


Stap 15: knijp naar zoom

Deze functie reageert op het bekende knijpen gebaar. Het behandelt de afbeelding inzoomen en uitzoomen.

 private finale functie onZoom (e: TransformGestureEvent): void / * Gebruik de gebeurtenisgegevens om de doelafbeelding te schalen * / e.target.scaleX * = e.scaleX; e.target.scaleY * = e.scaleY; 

Stap 16: Draai om te draaien

Rotatie wordt afgehandeld door deze functie, waaraan twee vingers gewend zijn spinnen het beeld in het werkgebied.

 private final-functie onRotate (e: TransformGestureEvent): void / * Gebruik de gebeurtenisgegevens om de doelafbeelding * / e.target.rotation + = e.rotation te roteren; 

Stap 17: schuif naar Pan

De Pan-functie wordt gebruikt om de afbeelding te verplaatsen om delen te zien die off-stage zijn.

 privé-finale functie onPan (e: TransformGestureEvent): void e.target.x + = e.offsetX; e.target.y + = e.offsetY; 

Stap 18: Veeg om te wisselen

Deze functie is iets groter vanwege de vier beschikbare veegrichtingen. Het gebaar lijkt op dat van de vorige stap, maar is steviger en in plaats van simpelweg het beeld te verplaatsen, verwisselt het het voor een ander beeld.

Het controleert eerst of een vorig item zich op het podium bevindt en slaat het op in een container om het te kunnen tweenen en later te kunnen verwijderen. Dan de compenseren eigenschap wordt gelezen om de richting van de veeg vast te stellen, waarbij de bijbehorende animatie en afbeelding worden weergegeven.

 private final-functie onSwipe (e: TransformGestureEvent): void / * Controleer of afbeelding op scène staat * / if (slideItem! = null) tempContainer = new Sprite (); tempContainer.addChild (slideItem); addChild (tempContainer);  / * Afbeeldingen wijzigen * / if (e.offsetX == 1) // right slideItem = new SlideItem (); slideItem.gotoAndStop (1); slideItem.x = -slideItem.width; slideItem.y = stage.stageHeight * 0.5; luisteraars ('add', slideItem); addChild (slideItem); TweenNano.to (tempContainer, 0.5, x: stage.stageWidth, onComplete: removeLast); TweenNano.to (slideItem, 0.5, x: stage.stageWidth * 0.5);  if (e.offsetX == -1) // left slideItem = new SlideItem (); slideItem.gotoAndStop (2); slideItem.x = stage.stageWidth + slideItem.width; slideItem.y = stage.stageHeight * 0.5; luisteraars ('add', slideItem); addChild (slideItem); TweenNano.to (tempContainer, 0.5, x: -slideItem.width, onComplete: removeLast); TweenNano.to (slideItem, 0.5, x: stage.stageWidth * 0.5);  if (e.offsetY == -1) // up slideItem = new SlideItem (); slideItem.gotoAndStop (3); slideItem.x = stage.stageWidth * 0.5; slideItem.y = stage.stageHeight + slideItem.height; luisteraars ('add', slideItem); addChild (slideItem); TweenNano.to (tempContainer, 0.5, y: -slideItem.height, onComplete: removeLast); TweenNano.to (slideItem, 0.5, y: stage.stageHeight * 0.5);  if (e.offsetY == 1) // down slideItem = new SlideItem (); slideItem.gotoAndStop (4); slideItem.x = stage.stageWidth * 0.5; slideItem.y = -slideItem.height; luisteraars ('add', slideItem); addChild (slideItem); TweenNano.to (tempContainer, 0.5, y: slideItem.height, onComplete: removeLast); TweenNano.to (slideItem, 0.5, y: stage.stageHeight * 0.5); 

Stap 19: Laatste dia-item verwijderen

Wanneer de animatie is voltooid, wordt het item buiten het podium vernietigd om geheugen te besparen.

 private laatste functie removeLast (): void listeners ('remove', tempContainer.getChildAt (0) als Sprite); removeChild (tempContainer); tempContainer = null; 

Stap 20: Hoofdklasse instellen

We zullen de Document Class gebruiken in deze tutorial, als je niet weet hoe je het moet gebruiken of een beetje in de war bent, lees dan dit Quick Tip.


Conclusie

Gebaren voegen een leuke toe aanraken en en bieden geweldige interactie in uw toepassing, gebruik ze!

Bedankt voor het lezen van deze tutorial. Ik hoop dat je het nuttig hebt gevonden!