Cocos2d-x 3.0

今天试着把代码升级至3.0,发现之前的CCArray的容器都变了,现在是使用Vector与Map<K,V>,简单用法</p>

cocos2d::Vector sprites;

auto sprite1 = Sprite::create("hello.png");
auto sprite2 = Sprite::create("hello.png");
auto sprite3 = Sprite::create("hello.png");
auto sprite4 = Sprite::create("hello.png");

sprites.push_back(sprite1)
sprites.push_back(sprite2)
sprites.push_back(sprite3)
sprites.push_back(sprite4)
</pre>

@sprites@ 内存管理是由编译器自动处理的,不要使用new来申请堆空间。

cocos2d::Map<std::string, Node> nodes;

auto node1 = Layer::create():
auto node2 = Layer::create():
auto node3 = Layer::create():
auto node4 = Layer::create():

nodes.insert("node_1", node1)
nodes.insert("node_2", node1)
nodes.insert("node_3", node1)
nodes.insert("node_4", node1)

参考:http://cocos2d-x.org/docs/manual/framework/native/data-structure/v3/vector/zh

http://cocos2d-x.org/docs/manual/framework/native/data-structure/v3/map/zh

</section>

CocoaChina 2014

今天去参加了CocoaChina 2014 春季开发者大会,上午7点半的时候骑自行车过去了,上午的演讲,主要是了解到了Cocos2d-x的最新动态,作为Cocos2d-x开发者,是很有必要了解的,3.0版本改动的东西确实是多,C++11特性,各种新API等,有时间真的要开始使用3.0了,要不然就跟不上了。

CocoStudio也将要发布2.0版本,这个版本我最喜欢的就是跨平台,实在不想再用回Windows了,期待2.0版本的表现。现在一直是使用CocosBuilder来做场景UI,不过现在已经不更新,等出2.0以后就换。

然后就是还有一个IDE,是基于Eclipse的,支持Lua与JS的断点调试,这个确实不错,现在写Lua是用Sublime Text,还行,不过不支持断点,这个IDE还有一点就是保存后自动重新加载游戏,省去重新部署游戏节省时间。

然后就是有一些新的想法,周末有时间把现在的游戏代码往3.0升级,不过这里肯定会有很多问题,只能是一步一步来了

Google Breakpad IOS

$ svn checkout http://google-breakpad.googlecode.com/svn/trunk/ google-breakpad-read-only
$ cd google-breakpad-read-only
$ ./configure
$ make

打开google-breakpad-read-only/src/tools/mac/dump_syms/dump_syms.xcodeproj编译dump_syms工具,编译成功后记录下可执行文件的地址。

打开已有的ios工程,把google-breakpad-read-only/src/client/ios/Breakpad.xcodeproj拖进工程,前提是该工程是workspace

在didFinishLaunchingWithOptions方法里加入

[[BreakpadController sharedInstance]start: YES];

在applicationWillTerminate方法时加入

[[BreakpadController sharedInstance]stop];

有几个配置是必须要填的

在Info.plist中加入

BreakpadProduct
BreakpadProductDisplay
BreakpadURL

出异常时会在当前应用的Library/Caches/Breakpad生成xxxxx.dmp文件

使用dump_syms生成sym文件

使用head -n1 xxx.sym查看

创建对应的目录

使用minidump_stackwalk查看错误信息

参考:https://code.google.com/p/google-breakpad/wiki/LinuxStarterGuide

RaspberryPi NAS

# sudo apt-get install samba samba-common-bin
$ sudo smbpasswd -a pi
$ sudo mkdir /home/shares
$ sudo mkdir /home/shares/public
$ sudo chown -R root:users /home/shares/public
$ sudo chmod -R ug=rwx,o=rx /home/shares/public
$ sudo vim /etc/samba/smb.conf
[public]
  comment = Public Storage
  path = /home/shares/public
  valid users = @users
  force group = users
  create mask = 0660
  directory mask = 0771
  read only = no
$ sudo vim /etc/fstab
/dev/sdxx /home/shares/public/disk1 auto gid=pi,uid=pi,noatime 0 0
$ sudo reboot

Cocos2d-x queueEvent

坑惨了。。。

Java中回调C/C++方法更新OpenGL的UI时一定不能直接调用或使用runOnUiThread调用,必须使用

// 定义jni接口
native private static void updateOpenGLUI();

Cocos2dxGLSurfaceView.getInstance().queueEvent(new Runnable() {
    @Override
    public void run() {
        updateOpenGLUI();
    }
});