首先,并非专业视频处理人员;以下命令都是我从网上搜索后修改以为己所用。
# gif 转视频(DURATION:时长,gif会循环播放) ffmpeg -ignore_loop 0 -t DURATION -f gif -i "INPUT.gif" -vcodec libx264 -crf 5 "OUTPUT.mp4" # png、jpg 转视频 ffmpeg -loop 1 -framerate 30 -f image2 -t DURATION -i "INPUT.jpg" -vcodec libx264 -crf 5 "OUTPUT.mp4"
Version: Cocos2dx-Lua 3.16
在某个页面修改后,出现闪退。查看修改记录没有特别的地方,均为修改图片或者条件判断。
启动 XCode 发现闪退位置出现在void Node::onEnterTransitionDidFinish()中, 在其调用子节点的child->onEnterTransitionDidFinish()时,child指针无效。
void Node::onEnterTransitionDidFinish()
child->onEnterTransitionDidFinish()
child
在日志信息中,有时需要获取当前函数的调用信息,比如打印调用栈:
debug.Stack()函数可以获取当前 goroutine 的调用栈信息,需要import "runtime/debug"。
debug.Stack()
import "runtime/debug"
8 9 10 11 12 13 14 15 16 17 18 19 20
func foo() { fmt.Println("--- BEGIN ---") fmt.Println(string(debug.Stack())) fmt.Println("--- END ---") } func boom() { foo() } func main() { boom() }
上回提到元表优化 Lua 配置文件,以减少重复字段,节省内存开销。
除了这种直接地减少内存开销的方法,使用元表还能实现数据的延迟加载,从另一个角度节约内存。
在游戏工程中,通常有大量配置是由策划提供,再转换成程序方便读取的格式添加到工程中。
在我参与的Cocos2dx-Lua工程中,策划通常在Excel中配置,再通过脚本转换为Lua-Table的文件。
Cocos2dx-Lua
Excel
Lua-Table
比如常见的道具表转换后:
C 语言与 Golang 相互调用的简单例子。
在此使用一段简单的代码展示 CGO 的基本用法 —— 在 Go 程序中使用 C 语言编程。
go vendor 是 go 1.6 官方正式引入的包管理方式。
其基本思路是,将引用的外部包的源代码放在当前工程的vendor目录下面,go 编译时会优先从vendor目录寻找依赖关系。
vendor
由于众所不知的原因,在国内访问golang.org需要爬梯子。
golang.org
所以使用go get安装某些包的时候,也要用梯子。
go get
以前粗学时并没有留意 Golang 的数组,一直以为只有切片。
今天看《Go 语言实践》时才发现 Golang 也有数组。与切片的区别是定义时指定长度(例如长度为 4 的 int 型数组var array [4]int)。
var array [4]int
数组赋值时会拷贝整个数组,所以作为参数传递时也会完整拷贝,要考虑性能合理使用,必要时可以使用指针。
以下代码便于理解数组和切片: