钢琴白块之获取点击

我的解决方案来自Bannings大神的“iOS 为移动动画中的View添加touch事件”,下面是地址
http://blog.csdn.net/zhangao0086/article/details/38356691

我功力不够。。。就只好把他的代码直接搬了过来XD

class ViewController: UIViewController {
    var testLayer = CALayer()
    var testView = UIView()

    override func viewDidLoad() {
        super.viewDidLoad()
        initView()
    }

    func initView() {
        testlayer.anchorPoint = CGPointMake(0, 0)
        testlayer.bounds = CGRectMake(100, 100, 100, 100)
        testlayer.backgroundColor = UIColor.greenColor().CGColor

        testView.frame = testlayer.bounds
        self.view.addSubview(testView)
        self.testView.layer.addSublayer(testlayer)

        let animation = CAKeyframeAnimation(keyPath: "position")

        //起始值和末尾值
        animation.values = [NSValue(CGPoint: CGPointMake(0, 0)),NSValue(CGPoint: CGPointMake(320, 640))]
        //动画持续的时间
        animation.duration = 4.0
        animation.delegate = self
        //animation.autoreverses = true//自动复位
        self.testlayer.addAnimation(animation, forKey: "move")

        let tap = UITapGestureRecognizer(target: self, action: "testtap:")
        self.view.addGestureRecognizer(tap)
    }

    func testtap(click:UITapGestureRecognizer) {
        let point = click.locationInView(self.testView)

        if ((self.testlayer.presentationLayer()?.hitTest(point)) != nil) {
            print("tap me")
        }
    }

    override func animationDidStop(anim: CAAnimation, finished flag: Bool) {
        print("anim end")

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

}

运行代码后,我们可以看到有一个绿色的小方块会进行你设定的起点和终点进行缓慢移动,当你点击这个小方块时,控制台会输出“tap me”,当动画结束后,控制台会输出“anim end”。
现在,我们已经可以获取得到运动中的动画的点击事件以及动画结束后发出的广播,那么,我们就写出琴键点击和游戏结束的判断了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值