简友广场ios swift学习笔记

swift从零开始--2048响应事件

2020-05-09  本文已影响0人  迷夏湖

昨天画好了主界面,今天给界面加点,让界面动起来,能够响应滑动事件。

1. 添加滑动响应事件

swift中添加滑动响应事件还是相对简单的,就是在ViewController中添加方法注册事件,上下左右滑动各对应一个具体的处理方法。废话不说,看代码。

    // 增加手势事件:上下左右滑动
    func setupSwipeEvent() {
        let upSwipe = UISwipeGestureRecognizer(target:self, action:#selector(onUpSwipe(_:)))
        upSwipe.numberOfTouchesRequired = 1
        upSwipe.direction = .up
        view.addGestureRecognizer(upSwipe)
    }
    // 向上滑动事件处理
    @objc func onUpSwipe(_ swiper:UISwipeGestureRecognizer) {
        NSLog("向上滑动了")
        // 随机生成一个方块
        mainScene.boardPanel.insertRandUnit();
    }

完了记得要在onViewDid方法中添加setupSwipeEvent这个方法哦。

2. 处理滑动事件

由于2048滑动事件实际处理想起来没那么简单,这次先实现向上滑动时随机添加一个方块,熟悉下这个过程。由于BoardPanel中有方块数组的定义,因此在这个类中添加随机方块的方法。

    // 随机插入方块
    func insertRandUnit() {
        let emptyArr = getRandEmptyGrids()
        NSLog(String(emptyArr!.count))
        if emptyArr!.isEmpty {
            NSLog("全放满了")
            return
        }
        let randIndex = Int(arc4random_uniform(UInt32(emptyArr!.count)))
        let label = emptyArr![randIndex]
        label.text = "2"
        label.backgroundColor = UIColor(red: 0.7, green: 0.8, blue: 1, alpha: 1)
    }
    // 获取空的方块数组
    func getRandEmptyGrids() -> [UILabel]! {
        var emptyArr = [UILabel]()  //空数组
        for i in 0 ..< DIM*DIM {
            let label = gridArr[i];
            // 通过label删的text内容判断是否是空的
            if("" == label.text) {
                emptyArr.append(label)
            }
        }
        return emptyArr
    }

3. 效果图

用模拟器测试,达到了预期的效果。


image.png

4.下一步计划

下一步,要研究下方块合并时的动画,以及方块连续合并并积分。

上一篇 下一篇

猜你喜欢

热点阅读