2013-08-04 48 views
0

想象一下,一個靜態的蛇遊戲,即蛇不能移動,但只增加或減少大小。我目前嘗試使用與分配給所有UIImageView的「蛇部分」和一個UIImage(表示一個「蛇部分」)一樣多的UIImageView來完成此操作。減少和增加蛇應導致新的「蛇部分」移入或移出屏幕。我碰到的問題是,它似乎一旦設置就無法更改UIImageView的位置。這讓我質疑我的解決方案的整個想法。因此,我有兩個問題給你:從UIImages構建一條蛇

  1. 這是真的,我不能改變UIImageView的位置,一旦它被設置?
  2. 是否有其他和/或「更好」的方式來完成上述概念?
+0

1.隨時可以修改UIImageView的位置_can_。這取決於。但任何解決方案都將涉及計算無論圖層或圖像視圖中包含的圖像在屏幕上的位置。 – FluffulousChimp

+0

@NSBum感謝您的回覆!我只是意識到我試圖在視圖上調用setBounds,而不是setFrame,這似乎是重新定位視圖的工作。但根據你的層次或圖像視圖,最佳方法是什麼? –

+0

如果您打算使用動畫來改變蛇的變化,那麼圖層/核心動畫將是首選。如果您的部署目標操作系統支持,另一個回答者提到了SpriteKit。 – FluffulousChimp

回答

1

如果您針對您的遊戲設置了iOS 7,我建議您查看SpriteKit,這是一個更適合做2D遊戲圖形的框架。對於較老的iOS版本,您可能需要使用CoreAnimation和CoreGraphics而不是UIKit。 UIKit更像是一個用戶界面構建框架,其他兩個用於構建動畫和2D圖形。

要真正回答你的問題,是的,你可以多次設置UIImageView的位置,它會移動到新的位置。只需設置你的UIImageView的center屬性即可。您可能想使用不同的框架來實現您的圖形。我會看看CoreAnimation和SpriteKit。他們有一些非常棒的WWDC會議視頻。

+0

我想我對自己在做的事情有點不清楚。這不是我製作的一款遊戲,但我用比賽來比喻我的問題。現在,我將繼續使用UIImageViews來重新定位它們(​​在您的幫助下)。 CoreGraphics,SpriteKit和其他提到的庫很有意思,我會將它們留在我的頭上以滿足未來的需求。謝謝大家幫助我解決這個問題! –

+0

沒問題,在這種情況下,聽起來像在UIKit中執行此操作(設置像Arbitur所建議的UIImageView的位置)是非常合理的。您還應該查看UIView動畫和CoreAnimation,以瞭解您可以在那裏獲得什麼。 –

0

據我所知你只是添加imageViews,然後嘗試移動它們。您應該將它們添加到陣列中,並且當您想要移動它們時,請執行以下操作:

UIImageView *imgView = imgArray[index]; 
imgView.center = CGPointMake(100,100);