1
所以我正在開發一個Ipad應用程序,允許用戶解決一個拼圖遊戲。我已經爲每件作品制定了平移動作,但是讓它們在我想要的地方工作不正常。當它在一個小範圍內時,我試圖讓它進入最終的目的地,然後是點擊聲。Swift - 拼圖對齊
這是一個拼圖塊的代碼。當我按下新遊戲按鈕時,圖像視圖會被設置爲相應的圖片,並隨機放置在畫布上。
@IBAction func NewGameTapped(sender: UIButton){
let bounds = UIScreen.mainScreen().bounds
let height = bounds.size.height
let width = bounds.size.width
image1.image = UIImage(named:"puzzleImage1.png")
image1.center.x = CGFloat(100 + arc4random_uniform(UInt32(width)-300))
image1.center.y = CGFloat(100 + arc4random_uniform(UInt32(height)-300))
//Create Panning (Dragging) Gesture Recognizer for Image View 1
let panRecognizer1 = UIPanGestureRecognizer(target: self, action: "handlePanning1:")
// Add Panning (Dragging) Gesture Recognizer to Image View 1
image1.addGestureRecognizer(panRecognizer1)
}
這是我遇到一些問題的地方。
func handlePanning1(recognizer: UIPanGestureRecognizer) {
let center = dict1_image_coordinates["puzzleImage1"] as![Int]
let newTranslation: CGPoint = recognizer.translationInView(image1)
recognizer.view?.transform = CGAffineTransformMakeTranslation(lastTranslation1.x + newTranslation.x, lastTranslation1.y + newTranslation.y)
if recognizer.state == UIGestureRecognizerState.Ended {
lastTranslation1.x += newTranslation.x
lastTranslation1.y += newTranslation.y
}
checkPosition(image1, center: center)
}
func checkPosition(image: UIImageView, center: [Int]){
let distance: Double = sqrt(pow((Double(image.center.x) - Double(center[0])),2) + pow((Double(image.center.y) - Double(center[1])),2))
//if the distance is within range, set image to new location.
if distance <= 20{
image.center.x = CGFloat(center[0])
image.center.y = CGFloat(center[1])
AudioServicesPlaySystemSound(clickSoundID)
}
無論出於何種原因,拼圖只希望捕捉到這點時,一塊開始接受捕捉距離範圍內的遊戲。我試過檢查我的程序的各個不同部分中的對象位置,但目前爲止沒有任何工作。任何幫助或其他提示,非常感謝。
我忘了提及有需要四處走動許多拼圖,所以當嘗試使用self.view版本,它只註冊最後設置的手勢識別器。 – zhauck
這是很好的zhauck。您可以將同時觸摸的次數設置爲多次。然後使用識別器對象來查找視圖以查看哪個拼圖塊被觸摸 –