iRepair

iPhone-udvikling: Spil-elementer #2 – fingerkontrol

billede-140
Åben “spil2ViewController.h”. I metoen touchesMoved tilføjer du dette:


	grafik.center = CGPointMake(location.x,location.y);

Vi sætter grafikken centrum til x- og y-koordinaterne vi fik fra berøringen.

Kør programmet i simulatoren og det vil se ud som billedet til højre. Hver gang du trykker med musen i simulatoren eller fingeren på iPhonen vil grafikken flytte til stedet for trykket og du kan aflæse koordinaterne på skærmen.

Enkelt ikke? Med under 10 liniers reel kode har vi lavet et program der kan styre grafik ved hjælp af fingeren.

Mere avanceret

Det kan selvfølgelig bliver mere avanceret. For eksempel kan man indsætte en test for om berøringen er sket et “tilladt” sted på skærmen. Det kan bruges, hvis man kun ønsker at kunne sætte for eksempel en spillebrik inden for spille pladen og ikke overalt på skærmen etc.

Man kan også lave det på en måde således, at grafikken ved berøring af skærmen, bevæger sig langsom fra hvor det var i forvejen, hen mod fingeren. Det kræver blot, at man laver en bevægelse (som i sidste artikel) i retningen af fingeren i stedet for at sætte centrum til fingerens position med det samme. Dette bruges blandt andet i Koi Pond hvor fiskene svømmer hen mod ens finger, når man rører skærmen. Husk at alt vi får er to koordinater for fingerens berøring, vi kan gøre med disse information hvad vi vil.

God fornøjelse med koderiet. Næste gang skal vi se på hvordan man kan styre grafikken ved hjælp af nogle knapper på skærmen.

Sider: 1 2 3 4 5 6 7

Skrevet af Martin Wolsing, 29/04 2009
Relaterede indlæg

Kommentarer
Subscribe to RSS
  • Emojet

     

    Jeg har nu tilføjet en label til mit program der siger “Tryk på skærmen for at få bolden i bevægelse”
    Når man så rører ved skærmen begynder bolden at gøre ligesom i dit eksempel.

    6. maj 2009 @ 16:05

  •  

    Dvs. at bolden bevæger sig mod fingeren?

    6. maj 2009 @ 16:36

  • Emojet

     

    Nej, den bevæger sig ligesom i dit eksempel, men der er en label når man starter programmet op der så forsvinder når man rører ved skærmen.

    6. maj 2009 @ 19:55

  • Emojet

     

    Undskyld, jeg mener ligesom i dit forrige eksempel “bevægelse af grafik”.

    Btw god artikel :)

    6. maj 2009 @ 19:56

  • Emojet

     

    Er det muligt at styre to objekter rundt med fingeren, ved at bruge de samme metoder som i dit eksempel?

    Jeg har selv prøvet, ved at skrive hele baduljen igen, men programmet crasher ligeså snart man rører skærmen.

    Kender du evt. Andre metoder man kan bruge til at flytte objekter rundt på skærmen?

    11. maj 2009 @ 21:56

  •  

    @Emojet

    Mener du, at styre to objekter så de bevæger sig uafhængigt at hinanden med to fingre? Jeg har ikke prøvet, men det må kunne lade sig gøre.

    Jeg har i en anden artikel beskrevet en anden metode til at flytte objekter med.

    11. maj 2009 @ 23:26

  • Emojet

     

    Ja, det var det jeg mente :)

    Hvad for en artikel var det?

    12. maj 2009 @ 09:43

  • Nielsen

     

    Ved godt det sikkert er meget basal med hvorfor bruger man * ved *touch og ikke ved location er det ikke pointer begge to?? kan en eller anden forklere mig dette, gerne bøjet i neon :-)

    UITouch *touch = [[event allTouches] anyObject];
    CGPoint location = [touch locationInView:touch.view];

    12. maj 2009 @ 11:15

  • Michael A.

     

    På side 5, skal det så ikke være i Spil2ViewController.m og ikke h?

    28. juni 2009 @ 19:23

  •  

    Tak, det er rettet nu.

    28. juni 2009 @ 19:33

  • Michael A.

     

    Mange tak :)

    28. juni 2009 @ 19:36

  • Michael A.

     

    Jeg har et problem. Hvor skal jeg placere touchesMoved henne i spil2ViewController.h?

    28. juni 2009 @ 19:44

  •  

    Nu blev vi lige enige om at den skulle være i -m-filen. :-)

    Det er ligegyldigt. Den skal bare være et sted. Selvfølgelig ikke i en anden funktion.

    28. juni 2009 @ 20:50

  • Michael A.

     

    Det var lige mig der lavede en fejl :) Jeg mener selfølgelig grafik.center = CGPointMake(location.x,location.y);

    28. juni 2009 @ 20:52

  • Michael A.

     

    Hvor skal det hen?

    28. juni 2009 @ 20:55

  • Michael A.

     

    Forresten, så skal du nok også lige rette det på side 7. Der står der også spil2ViewController.h :)

    28. juni 2009 @ 20:56

Skriv en kommentar

For at kommentere skal du udfylde navn og mailadresse. Du kan også oprette en profil på siden. Du finder registreringsformen nederst i sidebaren i højre side (klik på "Opret").