import UIKit
class ViewController: UIViewController {
@IBOutlet weak var penguinView: UIImageView!
var frames: NSArray?
var dieCenter: CGPoint?
override func viewDidLoad() {
super.viewDidLoad()
let image1 = UIImage(named:"penguin_walk01")!
let image2 = UIImage(named:"penguin_walk02")!
let image3 = UIImage(named:"penguin_walk03")!
let image4 = UIImage(named:"penguin_walk04")!
let frames: [UIImage] = [image1, image2, image3, image4]
penguinView.animationDuration = 0.15;
penguinView.animationRepeatCount = 2;
penguinView.animationImages = frames;
//walk right
let swipeGestureRight = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.walkRight(_:)))
swipeGestureRight.direction = UISwipeGestureRecognizerDirection.Right
view.addGestureRecognizer(swipeGestureRight)
//walk left
let swipeGestureLeft = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.walkLeft(_:)))
swipeGestureLeft.direction = UISwipeGestureRecognizerDirection.Left
view.addGestureRecognizer(swipeGestureLeft)
//jump
let tap = UITapGestureRecognizer(target: self, action: #selector(ViewController.jump(_:)))
view.addGestureRecognizer(tap)
//longPress
let longPress = UILongPressGestureRecognizer(target: self, action: #selector(ViewController.longPress(_:)))
view.addGestureRecognizer(longPress)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func walkLeft(send: UIGestureRecognizer) {
print("walk left");
//CHECK IF OUT OF SCREEN
if (penguinView.center.x < 0.0) {
penguinView.center = CGPointMake(view.frame.size.width, penguinView.center.y);
}
//FLIP AROUND FOR WALKING LEFT
self.penguinView.transform = CGAffineTransformMakeScale(-1.0, 1.0);
//START WALK ANIMATION
penguinView.startAnimating()
//MOVE THE IMAGE VIEW TO LEFT
UIView.animateWithDuration(0.6, animations: { () -> Void in
self.penguinView.center = CGPointMake(self.penguinView.center.x - 30, self.penguinView.center.y);
})
}
func walkRight(send: UIGestureRecognizer) {
print("walk right");
if (self.penguinView.center.x > self.view.frame.size.width) {
self.penguinView.center = CGPointMake(0, self.penguinView.center.y);
}
self.penguinView.transform = CGAffineTransformIdentity;
penguinView.startAnimating()
UIView.animateWithDuration(0.6, animations: { () -> Void in
self.penguinView.center = CGPointMake(self.penguinView.center.x + 30, self.penguinView.center.y)
})
}
func jump(send: UIGestureRecognizer) {
penguinView.startAnimating()
UIView.animateWithDuration(0.25, animations: { () -> Void in
self.penguinView.center = CGPointMake(self.penguinView.center.x, self.penguinView.center.y - 50)
}, completion: { (finished: Bool) -> Void in
self.jumpBack()
})
}
func jumpBack() {
UIView.animateWithDuration(0.25, animations: { () -> Void in
self.penguinView.center = CGPointMake(self.penguinView.center.x, self.penguinView.center.y + 50)
})
}
func longPress(send: UIGestureRecognizer) {
UIView.animateWithDuration(0.33, animations: { () -> Void in
self.dieCenter = self.penguinView.center
self.penguinView.center = CGPointMake(self.penguinView.center.x, self.view.frame.size.height)
}, completion: { (finished: Bool) -> Void in
self.longPressBack()
})
}
func longPressBack() {
UIView.animateWithDuration(0.25, animations: { () -> Void in
self.penguinView.center = self.dieCenter!
})
}
}
要准备四张图片
运行结果界面
当点击时会跳跃,当向右滑动会向右走,左划想左走