2012-04-08 113 views
0

我正在研究一個將從屏幕頂部落下物體的概念。對於這個例子可以說,4個對象:紅色方塊,藍色方塊,綠色方塊,黃色方塊。如何在ios中創建對象的新實例?

我將所有這些對象放置在界面構建器中,並使用.h文件中給出的名稱進行連接:IBObject UIImageView * greenSquare;例如。

我能夠與「greenSquare」的罰款交互,讓它從視圖的頂部落到底部並從視圖中消失。現在我想能夠重新創建「greenRectangle」並讓它再次下降。我不能只重置一個實例,因爲在任何給定的點上,一個或多個同一個對象會下降。

最終結果將是任何顏色的正方形的數量將顯示和下降。

我敢肯定,我對這個工作流程是:

  • 設置時間來接方
  • 位置廣場
  • 演出方
  • 爲x率
  • 下降平方米

任何推動正確的方向都會很棒。感謝大家!

回答

0

這裏是我做過什麼:在我

。h文件我創建了對象的實例:

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

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

我然後設置圖像:計時器觸發我內部

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

最後:

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

我打電話的方法和設置定時器創建一個隨機數字,選擇一個球並創建它:

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

也許你應該考慮設置矩形y的位置回到屏幕的頂部,當它在底部消失時。所以你不必重新創建並重用它。 Dan

+0

如果我只想讓其中一個顯示在屏幕上,那就行了。但是,我的應用程序可能具有對象的0-> x個實例。 – dcp3450 2012-04-08 15:25:36

2

爲什麼你使用InterfaceBuilder進行此操作 - 切換到「僅限代碼」的實現,你應該沒問題。

1)創建圖像

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

2)位置時,它

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

3)啓動動畫
4)當它擊中的底部,將其刪除

[img removeFromSuperview]; 

5 )再次將此img添加到頂部...

如果你想擁有多個這些綠色img,你一次可以創建多個綠色img。如果只有一個就足夠了,那麼每次動畫到達底部時都可以重新使用img

編輯

,如果你想從一個 UIImage創建多個 UIImageView小號

做這樣的:

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

有些時候,比如綠色將會在不到一秒的時間內被召回。在這種情況下,我會在屏幕上同時出現兩個綠色,並在顯示後立即掉落。 – dcp3450 2012-04-08 17:05:10

+0

這應該不是問題 - 只需使用相同的PNG創建兩個實例即可。 – pkyeck 2012-04-08 17:40:44

+0

view.addSubview(img)給了我一個錯誤。不過,[self.view addSubview:img]完美無缺。所以,例如[self.view addSubview:img]兩次會給我兩個greenballs。我將如何設置兩個不同的CGPointMake職位。我假設我設置了,例如,UIImageView * img2 = img; [self.view addSubview:img2]? – dcp3450 2012-04-08 19:17:27

相關問題