iPhone-udvikling: Spil-elementer #2 – fingerkontrol

Å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.
Virksomhed skifter til iPhonen pga. bedre sikkerhed
Nu kan du redde et still-billede ud af videooptagelsen
Ugens mock-up: iPhone inspireret af Apples Magic Mouse
Der er udfordringer i en flad men udviddet version af Rubik’s Cube
Steve Jobs var tæt involveret i designet af en iPhone med større skærm
Spring ud i det mørke rum, men sørg for at lande det rigtige sted
Æd en masse insekter, men vogt dig for de farlige
Apple: Den nye iPad har skiftet navn
Giv dit musikbibliotek på iPaden et personligt præg
Post-apokalyptisk spil spår om affald, som omdannes til destruktive monstre.
15,4″ retina-skærm allerede i produktion
Alle detaljer om ny MacBook afsløret
Apple-bestyrelsesmedlem: Apple rykker snart ind i folks dagligstuer
Mediedirektør: Apple TV gør intet for at hjælpe med at få internetmateriale på ens TV
Rygte: Apple vil købe TV-producenten Loewe
Bestyrelsesmedlem hos Foxconn: Vi gør os klar til produktion af Apple-fjernsyn
Opdatering til Apple TV giver preview i HD
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
Martin
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
Martin
@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
Martin
@Emojet
http://iphoneguide.dk/nyheder/iphone-udvikling-spilelementer-3-knapkontrol/
12. maj 2009 @ 10:51
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
Martin
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
Martin
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