Hmm jak sie za to zabrac?
#1
Napisano 06 czerwca 2010 - 16:31
Pisze bo nie mam bladego pojecia jak sie za to zabrac? czego uzyć?(chodzi mi o elementy UI) moze ktos mialby interesujacy mnie przyklad, albo choc nakierowal czego szukac aa teraz przejde do omowienia problemu otoz ponizej mamy plik PNG:
jak widać ma nie regularny kształt i każda z figur jest oznaczona kolejno cyframi 1,2...
Jak sprawić by Iphone wiedział która z nich kliknelismy
#2
Napisano 06 czerwca 2010 - 18:22
#3
Napisano 06 czerwca 2010 - 20:12
// // Collision.h // Snake Adventures // // Created by Krzysiek on 09-04-14. // Copyright 2009 chris-software.com. All rights reserved. // #import <Foundation/Foundation.h> @interface Collision : NSObject { int corners; int I; CGPoint corner[20]; } -(void)addCorner:(CGPoint)point; -(BOOL)colission:(float)x:(float)y; @end
// // Collision.m // Snake Adventures // // Created by Krzysiek on 09-04-14. // Copyright 2009 chris-software.com. All rights reserved. // #import "Collision.h" @implementation Collision -(BOOL)colission:(float)x:(float)y { int i, j = 0; bool collision = false; for (i = 0; i < corners; i++) { j++; if (j == corners) j = 0; if (corner[i].y < y && corner[j].y >= y || corner[j].y < y && corner[i].y >= y) { if (corner[i].x + (y - corner[i].y) / (corner[j].y - corner[i].y) * (corner[j].x - corner[i].x) < x) collision = !collision; } } return collision; } -(void)addCorner:(CGPoint)point { corner[++I] = point; corners++; } -(void)start { } -(void)check { } @end
#4
Napisano 06 czerwca 2010 - 20:13
#5
Napisano 06 czerwca 2010 - 20:42
collision[0] = [Collision alloc]; [collision[0] addCorner:CGPointMake(268,1)]; [collision[0] addCorner:CGPointMake(235,28)]; [collision[0] addCorner:CGPointMake(213,94)]; [collision[0] addCorner:CGPointMake(225,243)]; [collision[0] addCorner:CGPointMake(312,227)]; [collision[0] addCorner:CGPointMake(294,123)]; [collision[0] addCorner:CGPointMake(312,67)]; [collision[0] addCorner:CGPointMake(404,1)];
jedna klasa collision to jeden wielokąt
#6
Napisano 06 czerwca 2010 - 21:20
---------- Wpis dodano o 22:20 ---------- Poprzedni wpis dodano o 21:53 ----------
eh gubię się w tym ... jest szansa na wersje dla blondynek ?
np: przykładowy projekt
#7
Napisano 07 czerwca 2010 - 01:33
#8
Napisano 07 czerwca 2010 - 08:08
#9
Napisano 07 czerwca 2010 - 08:45
#10
Napisano 07 czerwca 2010 - 08:53
#11
Napisano 07 czerwca 2010 - 12:37
#12
Napisano 07 czerwca 2010 - 12:57
Widzisz akurat część mapy z fragmentem lewym górnym czyli (0,0). Nałóż te punkty które pokazałem i zobaczysz jak ten wielokąt jest zbudowany.
Następnie do obiektu klasy Collision wysyłasz metodę
[obiekt collision:pozycjaGłowyWężaX:pozGłWęY];i zwraca Ci informację, czy uderza jego głowa w rzeke, czy też nie.
W Twoim wypadku, jeżeli mamy Collision np. dla konkretnego wielokąta, znaczy, że użytkownik kliknął ten wielokąt.
swoją drogą żałuje, że nie dokończyłem tego projektu :|
Snake Adventures preprepre Alpha chyba w cydii jest dostępne jeżeli ktoś chciałby się pobawić
#14
Napisano 07 czerwca 2010 - 13:30
Przedewszystkim wypadałoby w nagłówku - Untitled2VC.h dodać informację o obiekcie, przecież będziesz go używał zawsze, a nie tylko przy deklaracji jego rogów. Kiedyś też zaczynałem programowanie w Obj-C mając doświadczenie w wielu innych językach i korzystałem z klasycznych tablic zamiast NSMutableArray, ale to nie istotne. Po prostu dodaj informacje w nagłówku o obiekcie collision klasy Collision oraz także poinformuj program, że Collision to nazwa klasy a nie z nikąd wzięta nazwa korzystając z @class:
@class Collision; @interface Untitled2ViewController : UIViewController { Collision *collision; } @end
następnie zmień w Untitled2VC.m wszystkie collision[0] na collision i tym magicznym zabiegiem program nam się skompiluje.
Zuki to były tak masakryczne podstawy i najbardziej podstawowe aż rażące w oczy błędy, że zastanawia mnie czy w ogóle uczyłeś się, czy robisz program krok po kroku, gdzie każdy krok poprzedzasz tutorialem, a każdą niejasność forami z działami developerskimi? Daleko tak nie zajdziesz.
Teraz zostaje już tylko wprowadzenie danych.
nie mowie ze macie to zrobic za mnie ale nakierowac
W językach obiektowych bardzo często klasy są bardzo skomplikowane i nie koniecznie przystosowane do profilu/preferencji programisty - nie musisz przecież znać wszystkich frameworków, a nauka tego zajęłaby lata. Wiele klas trzeba nauczyć się używać, nie koniecznie trzeba zrozumieć. Np. analiza ASIHTTPRequest, parserów JSON to niezła katorga nawet dla doświadczonych programistów, wystarczy dodanie tego do projektu i możemy się skupić na kolejnym etapie, nie na odkrywaniu koła od nowa. Nie mniej jednak dziwienie się, czemu znikąd wzięta zmienna powoduje Fatal error compilatora, jest błędem poważnym. Nawet w PHP dodanie instrukcji i = j;, jeżeli j nigdzie wcześniej nie zostało zadeklarowane wyświetli warning.
Klasę Collision napisałem w kwietniu tamtego roku teraz inaczej bym do niej podszedł, ale napisałem ją sam w oparciu o matematyczny przykład pewnego profesora, który opowiadał jak sprawdzić, czy dany punkt należy do wielokąta.
Powodzenia w rozwijaniu umiejętności.
Kontynując póżniej metodą touchesBegin lub touchesEnded korzystając z ogólno dostępnych źródeł otrzymasz informacje w jakim (x,y) miejscu pojawił się/zniknął palec użytkownika/kursor myszy na symulatorze i zrobione.
#15
Napisano 07 czerwca 2010 - 13:50
#16
Napisano 07 czerwca 2010 - 13:52
2010-06-07 14:50:44.866 Untitled2[7605:207] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<Untitled2ViewController 0x3914650> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key open.'
w interfacebuilderze przycisk Open jest podpięty do nieistniejącego outletu open. Albo stwórz ponownie outlet albo usuń nieistniejącą referencje.
#17
Napisano 07 czerwca 2010 - 14:02
---------- Wpis dodano o 15:02 ---------- Poprzedni wpis dodano o 14:55 ----------
Teraz pasuje sprawic by cos sie dzialo np wyskakiwal alert po kliklnieciu
#19
Napisano 07 czerwca 2010 - 15:36
if(NO WLASNIE CO?){ UIAlertView *simpleAlert = [[UIAlertView alloc] initWithTitle:@"Test" message:@"Trafiles" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK",nil]; [simpleAlert show]; [simpleAlert release]; }Jaka wartosc jest przy wykruciu dotkniecia wielokata?
#20
Napisano 07 czerwca 2010 - 16:22
Wielokąt numer 1:
punkty: (61,200) , (135,114), (110,350) , (63,275) - uwzględniając białe tło dookoła tego obrazka http://img339.images.../ilustracja.png
Tworzysz więc klasę Collission dodając te 4 punkty
metodą touchesBegan lub touchesEnded sprawdzasz współrzędne dotyku
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint currentTouch; currentTouch = [touch locationInView:self.view]; (lub [touch locationInView:obrazek] gdzie obrazek ma userInteractionEnabled = YES float xAxis = currentTouch.x; float yAxis = currentTouch.y; if ([wielokat1 collision:xAxis:yAxis]) ... }
EOT jeżeli chodzi o mnie
Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych