2012-04-08 13 views
0

Ich arbeite an einem Konzept, bei dem Objekte vom oberen Bildschirmrand fallen. Für dieses Beispiel lassen sich beispielsweise 4 Objekte angeben: rotes Quadrat, blaues Quadrat, grünes Quadrat, gelbes Quadrat.Wie erstelle ich neue Instanzen eines Objekts in ios?

Ich habe alle diese Objekte im Interface Builder platziert und mit den Namen in den .h-Dateien verbunden: IBObject UIImageView * greenSquare; beispielsweise.

Ich bin in der Lage, mit der "greenSquare" -Farbe zu interagieren und sie von der Spitze der Ansicht nach unten fallen zu lassen und von der Ansicht verschwinden. Im Moment möchte ich in der Lage sein, den "greenRectangle" neu zu erstellen und ihn wieder fallen zu lassen. Ich kann diese eine Instanz nicht einfach zurücksetzen, da zu irgendeinem Zeitpunkt 1 oder mehr des gleichen Objekts fallen würden.

Das Endergebnis wäre x Anzahl der Quadrate von einer der Farben würde zeigen und fallen.

Ich bin sicher, dass mein Workflow hierfür wäre:

  • Set Time Square
  • Position Platz
  • Show Platz
  • Tropfen Quadrat auf x Rate

holen Jeder Stoß in die richtige Richtung wäre großartig. Danke allen!

Antwort

0

hier ist das, was ich getan habe:

in meinem.h-Datei erstellt ich die Objektinstanzen:

UIImageView *yellowImage; 
UIImageView *greenImage; 
UIImageView *orangeImage; 
UIImageView *redImage; 

UIImage *yellow; 
UIImage *green; 
UIImage *orange; 
UIImage *red; 

ich dann die Bilder gesetzt:

green = [UIImage imageNamed:@"greenball.png"]; 
yellow = [UIImage imageNamed:@"yellowball.png"]; 
orange = [UIImage imageNamed:@"orangeBall.png"]; 
red = [UIImage imageNamed:@"redball.png"]; 

ich eine Methode aufgerufen und einen Timer einstellen:

[NSTimer scheduledTimerWithTimeInterval:(0.5) target:self selector:@selector(onTimer) userInfo:nil repeats:YES]; 

schließlich innerhalb des ontimer I Erstellen Sie eine Zufallszahl, die einen Ball auswählt und so erstellt:

greenImage = [[UIImageView alloc] initWithImage:green]; 
greenImage.frame = CGRectMake(startX,0,43,43); 
[self.view insertSubview:greenImage belowSubview:bottomBar]; 
0

Vielleicht sollten Sie darüber nachdenken, die Rechtecke y-Position wieder an den oberen Bildschirmrand zu setzen, wenn sie unten verschwindet. Sie müssen es also nicht neu erstellen und wiederverwenden. Dan

+0

Das würde funktionieren, wenn ich nur einen auf dem Bildschirm zeigen möchte. Meine Anwendung kann jedoch 0-> x Instanzen des Objekts haben. – dcp3450

2

Warum verwenden Sie InterfaceBuilder für diese - wechseln Sie zu einer "Code only" Implementierung und Sie sollten in Ordnung sein.

1) Erstellen Bild

UIImage *green = [UIImage imageNamed:@"green.png"]; 
UIImageView *img = [[UIImageView alloc] initWithImage:green]; 
[view addSubview:img]; 

2) positionieren

img.center = CGPointMake(<RANDOM NUMBER>, -30); 

3) beginnen Animation
4), wenn sie den Boden trifft, abnehmen

[img removeFromSuperview]; 

5) füge diesen img wieder nach oben hinzu ...

Wenn Sie mehrere dieser grünen IMGs haben möchten, können Sie mehrere gleichzeitig erstellen. Wenn nur eines ausreicht, können Sie das img jedes Mal wiederverwenden, wenn die Animation den unteren Rand erreicht hat.

bearbeiten

, wenn Sie mehrere UIImageView s von einem UIImage tun es wie folgt erstellen möchten:

UIImage *img = [UIImage imageNamed:@"green"]; 

UIImageView *imgView1 = [[UIImageView alloc] initWithImage:img]; 
imgView1.center = CGPointMake(100, 100); 
[self.view addSubview:imgView1]; 

UIImageView *imgView2 = [[UIImageView alloc] initWithImage:img]; 
imgView2.center = CGPointMake(100, 500); 
[self.view addSubview:imgView2]; 
+0

Es wird Zeiten geben, in denen zum Beispiel ein Grün mehr als einmal in weniger als einer Sekunde aufgerufen wird. In diesem Fall würde ich zwei Grüns gleichzeitig auf dem Bildschirm haben und direkt nach dem Erscheinen fallen. – dcp3450

+0

das sollte kein Problem sein - verwenden Sie einfach das gleiche PNG, um zwei Instanzen zu erstellen. – pkyeck

+0

view.addSubview (img) gab mir einen Fehler. Allerdings funktioniert [self.view addSubview: img] perfekt. Also, in Beispiel [self.view addSubview: img] würde mir zweimal zwei der Greenballs geben. Wie würde ich zwei verschiedene CGPointMake-Positionen setzen. Ich nehme an, ich setze zB UIImageView * img2 = img; [self.view addSubview: img2]? – dcp3450

Verwandte Themen