cocos2d-x日记-1

几个重要概念

在cocos2d引擎中,有几个概念,分别是导演,场景,布景和人物角色。

  1. 导演(CCDirector)在cocos2d-x引擎中,导演类是游戏的组织者和领导者,导演制定规则让游戏内的场景,布景,和人物角色有序的运行
  2. 摄像机(CCCamera),每个节点都需要使用摄像机,当节点发生缩放,旋转,和位置变化时,都需要覆盖摄像机,让这个节点通过摄像机重新渲染。
  3. 场景(CCScene)在游戏里,场景就是关卡,关卡有人物和背景构成
  4. 布景(CCLayer)从概念上说,布景就是场景里的背景,其实就是层次的概念,这种概念在kjava时代就有,就是手动的把游戏中的场景分层(也有靠地图编辑器实现这一功能的)
  5. 人物(CCSprite),这就很明显了,当然包括主角和敌人,和npc,以我个人的理解,也包括游戏中的动态大图素及机关等
  6. 动作(CCAction),就是人物(CCSprite)拥有的动作

用JavaScript读取本地文件内容

随着JavaScript应用面的逐渐广泛。我们的js的要求也愈来愈高,现在我们可以用js做后端服务器(Node.js),做前端游戏模拟器(JS GameBoy Color Game Center),甚至有人用他模拟了一台pc,并且装上了linux(jslinux)在浏览器里跑。js总是给我们带来一个又一个惊喜。

随着HTML5的流行和逐渐普及,无数的好的接口也一个个的向我们走来,惊喜不断,以前一直被视为无法实现的js读取本地文件内容在现在也已经不再是什么难事了。你唯一需要关注的可能就是浏览器兼容性问题了。

今天要介绍的是使用js读取本地文件内容:

我们完全依赖FileReader类完成读取工作,你可以到w3c的网站查看相关的说明http://www.w3.org/TR/FileAPI/

然后我们需要使用到html的input标签的file类型元素


multiple=””用于设置控件为多选

下面是读取文件的代码
Continue reading

简单的JS同步调用函数实现-初探

最近自己试验性的写了一个可以实现同步调用的JS函数。

使用的递归的原理。

var syncExe = function(){
	var fLen = arguments.length;

	var exe = function(funcs,count,sum,retval){
		if(!!retval){
			if(!('return' in exe)){
				exe['return'] = [];
			}
			exe['return'].push(retval);
		}
        if(count == sum){
            return;
        }else{
            funcs[count](function(str){
                count++;
                exe(funcs,count,sum,str);
            });
        }
	}
	exe(arguments,0,fLen);
	return exe['return'];
};

Continue reading

linux socket系统调用的错误码及含义

linux socket系统调用socket,accept,bind,listen,connect,send,recv等函数出错时,errno的值及其含义对应如下:

EAGAIN: Resource temporarily unavailable
EWOULDBLOCK: Resource temporarily unavailable
EBADF: Bad file descriptor
ECONNREFUSED: Connection refused
EFAULT: Bad address
EINTR: Interrupted system call
EINVAL: Invalid argument
ENOMEM: Cannot allocate memory
ENOTCONN: Transport endpoint is not connected
ENOTSOCK: Socket operation on non-socket
EACCES: Permission denied
ECONNRESET: Connection reset by peer
EDESTADDRREQ: Destination address required
EMSGSIZE: Message too long
ENOBUFS: No buffer space available
EOPNOTSUPP: Operation not supported
EPIPE: Broken pipe
EPERM: Operation not permitted
EADDRINUSE: Address already in use
EAFNOSUPPORT: Address family not supported by protocol
EALREADY: Operation already in progress
EINPROGRESS: Operation now in progress
EISCONN: Transport endpoint is already connected
ENETUNREACH: Network is unreachable
ETIMEDOUT: Connection timed out
EMFILE: Too many open files
ENFILE: Too many open files in system
EPROTO: Protocol error
EADDRINUSE: Address already in use
EADDRNOTAVAIL: Cannot assign requested address
ELOOP: Too many levels of symbolic links
ENAMETOOLONG: File name too long
ENOENT: No such file or directory
ENOTDIR: Not a directory
EROFS: Read-only file system
EPROTONOSUPPORT: Protocol not supported

Continue reading

为Node.js的express框架加入session的memcache存储支持

需要的依赖:connect-memcached

var express = require('express');
var app = express.createServer();
var mcStore = require('connect-memcached')(express);
app.use(express.cookieParser());//必须,用于解析cookie
var mc = new mcStore({hosts: "localhost:11211"});
app.use(
	express.session(
			{
				key: "zensessid", //这里必须为全小写,否则每次都会构造一个新的session id和session给用户。这可能是express的一个bug,原理可能是express根据该key转小写后的字符串去查找客户端cookie里的该键值对。
				secret: "zensess", //加密字符串
				store:mc
			}
		)
);
app.get('/',function(req,res){
	req.session.web = 'http://z-en.com';
});