存档

2015年12月 的存档

[置顶] 开始学习Unity

2015年12月30日 没有评论

                         开始学习Unity了.

        3D时代来临,作为一个程序员,一定是在考虑自已的未来方向。其实Cocos3D也好,Unity也罢,都不过是一个工具,做游戏开发的关键还是解决问题的思路,方法。

  

            我们团队在这一年来,一直在使用Cocos开发各类3D游戏,也积累了很多经验。说心里话,我是希望咱中国自已的引擎能发展壮大的。后续也会继续使用Cocos开发各类2D,3D,VR游戏,也欢迎各位同好继续友好交流。

 

           不过今天去看了电影《老炮儿》,感觉到自已一直固守了原创引擎的想法,错失了掌握Unity和Unreal的好时机,没有及时更新对于新时期流行技术的认识,也不是很明智。

             

           Unity,还是好好学习下吧。毕竟,红孩儿的粉儿,也要成长~


            新建QQ群,有兴趣一块学习的朋友可加~

[置顶]        开始学习Unity

分类: 未分类 标签:

iOS9 ReplayKit录制视频

2015年12月11日 没有评论

猴子原创,欢迎转载。转载请注明: 转载自Cocos2Der-CSDN,谢谢!
原文地址: http://blog.csdn.net/cocos2der/article/details/50260873

iOS9的ReplayKit 视频录制,api非常简单,下面是代码,Objective-C的类似,就不写了。

//
//  ReplayKitProxy.swift
//  ReplayKitDemo
//
//  Created by LiuYanghui on 15/12/11.
//  Copyright © 2015年 LiuYanghui. All rights reserved.
//

import UIKit
import ReplayKit

class ReplayKitProxy: NSObject, RPPreviewViewControllerDelegate {

    private var rootViewController: UIViewController?
    private var previewViewController: RPPreviewViewController?

    class var sharedInstance : ReplayKitProxy {
        struct Static {
            static var onceToken : dispatch_once_t = 0
            static var instance : ReplayKitProxy? = nil
        }
        dispatch_once(&Static.onceToken) {
            Static.instance = ReplayKitProxy()
            Static.instance?.initData()
        }
        return Static.instance!
    }

    private func initData() {

    }

    /// 开始录制视频
    func startRecording() {
        let recorder = RPScreenRecorder.sharedRecorder()

        if recorder.available == false {
            print("Replaykit is not available")
            return
        }

        if recorder.recording == true {
            print("Replaykit is recording")
            return
        }

        recorder.startRecordingWithMicrophoneEnabled(true) { (error) -> Void in
            if error != nil {
                print(error?.localizedDescription)
            }
        }
    }

    /// 停止录制视频
    func stopRecording() {
        let recorder = RPScreenRecorder.sharedRecorder()
        if recorder.recording == false {
            return
        }

        recorder.stopRecordingWithHandler { (previewViewController, error) -> Void in
            if error != nil {
                print(error?.localizedDescription)
            }else if let viewController = previewViewController{
                viewController.previewControllerDelegate = self
                self.previewViewController = viewController
            }
        }
    }

    /// 删除已录制视频,必须在stopRecording之后调用
    func discardRecording() {
        let recorder = RPScreenRecorder.sharedRecorder()
        if recorder.recording == true {
            return
        }

        recorder.discardRecordingWithHandler { () -> Void in
            print("discardRecording complete")
        }
    }

    /// 显示视频
    func displayRecordingContent() {
        rootViewController?.presentViewController(self.previewViewController!, animated: true, completion: { () -> Void in
            print("display complete")
        })
    }

    // MARK: - delegate
    func previewControllerDidFinish(previewController: RPPreviewViewController) {
        previewController.dismissViewControllerAnimated(true) { () -> Void in

        }
    }
}

分类: 未分类 标签: