2014年1月26日星期日

【cocos2d-x从c++到js】12:回调函数1——按键回调

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
【cocos2d-x从c++到js】12:回调函数1――按键回调  阅读原文»

每日博报 精彩不止一点关闭
【cocos2d-x从c++到js】12:回调函数1――按键回调

回调函数是界面交互和接入各种第三方SDK的关键所在,因为回调函数的C++代码是不能自动生成的,一切的一切,都需要手写完成。

比较不错的是,Cocos2d-x引擎对于回调函数提供了完整的包装机制。我们所需要做的就是了解这个机制,并使用他。学习引擎自己的代码例子,可以比较快速准确的上手这一机制。

首先,我们在Cocos2d-x 3.0 beta版中,使用他自带的工程创建工具,新建一个跨平台的JS项目。按照惯例,这是一个helloworld项目。在XCode运行时,我们可以看到:

可以看到右下角的回调按钮。我们来看看他是怎么实现的。分成两个过程来做:

一、绑定回调函数过程

首先,我们要去找回调函数JS的绑定代码,在myApp.js中,init函数里面,可以看到如下代码:

3
4
5
6
7
8
9
10
11
12
// add a "close" icon to exit the progress. it's an autorelease object
var closeItem = cc.MenuItemImage.create(
"res/CloseNormal.png",
"res/CloseSelected.png",
function () {
cc.log("close button was clicked.");
},this);
closeItem.setAnchorPoint(cc.p(0.5, 0.5));
var menu = cc.Menu.create(closeItem);
menu.setPosition(cc.p(0, 0));
this.addChild(menu, 1);
closeItem.setPosition(cc.p(size.width - 20, 20));

cc.MenuItemImage.create函数的第三个参数,绑定了匿名回调函数。第四个参数,传入的是回调函数调用时的this(如果不理解JS的this机制,请先阅读一些JS的资料)。这些都是意图和作用很明显的JS代码,不用细说。

然后,我们去看底层对应执行的C++代码。在cocos2d_specifics.cpp文件中,找到js_cocos2dx_CCMenuItemImage_create函数。

37
38
39
40
41
42
43
44
45
46
// "create" in JS
JSBool js_cocos2dx_CCMenuItemImage_create(JSContext *cx, uint32_t argc, jsval *vp)
{
if (argc >= 2 && argc <= 5) {
jsval *argv = JS_ARGV(cx, vp);
JSStringWrapper arg0(argv[0]);
JSStringWrapper arg1(argv[1]);
JSStringWrapper arg2;
bool thirdArgIsString = true;
if (argc >= 3) {
thirdArgIsString = argv[2].isString();
arg2.set(argv[2], cx);
last = 3;
}
}
jsThis = argv[last];
}
}
else {
linux系统使用yum仓库出现的错误总结  阅读原文»

linux系统使用yum仓库出现的错误总结

1.用yum安装软件出现磁盘空间满

  [root@node1 ~]# yum install ftp     --安装软件出现错误  ...................................  Error Downloading Packages:  ftp-0.17-53.el6.i686: Insufficient space in download directory /var/cache/yum/i386/6/c6-tong/packages  * free   0  * needed 56 k  [root@node1 ~]#  

图:

wKiom1LjXnnjIy0qAAIOzJxrKa0616.jpg

解决方法:

  [root@node1 ~]# df -h      --查看磁盘空间,空间已满  文件系统          容量  已用  可用 已用%% 挂载点  /dev/mapper/VolGroup-lv_root  6.5G  6.1G     0 100% /      --根分区空间已满,清除文件  tmpfs                 504M     0  504M   0% /dev/shm  /dev/sda1             485M   46M  414M  10% /boot  /dev/sr0              3.6G  3.6G     0 100% /mnt  [root@node1 home]# df -h       --清除后的结果  文件系统          容量  已用  可用 已用%% 挂载点  /dev/mapper/VolGroup-lv_root  6.5G  1.9G  4.2G  31% /  tmpfs                 504M     0  504M   0% /dev/shm  /dev/sda1             485M   46M  414M  10% /boot  /dev/sr0              3.6G  3.6G     0 100% /mnt  [root@node1 home]#  

测试结果:

  [root@node1 home]# yum install ftp     --安装成功  Loaded plugins: fastestmirror  Determining fastest mirrors  c6-tong  ........................................  Running Transaction  Installing : ftp-0.17-53.el6.i686                                                                                                                   1/1  Verifying  : ftp-0.17-53.el6.i686                                                                                                                   1/1  Installed:  ftp.i686 0:0.17-53.el6  Complete!  [root@node1 home]#  

2.用yum使用网络源,出现网络不通

  [root@node1 yum.repos.d]# yum install squid  Loaded plugins: fastestmirror  Loading mirror speeds from cached hostfile  Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=i386&repo=os error was  14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"  Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=i386&repo=centosplus error was  14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"  ^C^C^C^Z  [1]+  Stopped                 yum install squid  [root@node1 yum.repos.d]# ping www.baidu.com  ^C  

解决方法:(检查网络)

wKiom1LjZK_QIjqUAAIYF6-U5j4224.jpg

测试结果:

wKiom1LjZhDh-nn5AADUmIIL1ik482.jpg

3.使用yum安装软件包出现进程占用

wKiom1LjZT3jdvgRAAHpqT_hsVg183.jpg

解决方法:

wKioL1LjZVeDvnuHAABLcTcxfpk509.jpg

测试结果:

wKioL1LjZbLBoxqVAADUmIIL1ik182.jpg

Linux搭建网络源:http://tongcheng.blog.51cto.com/6214144/1338949

Linux搭建本地源:http://tongcheng.blog.51cto.com/6214144/1338876

本文出自 "一起走过的日子" 博客,谢绝转载!

阅读更多内容

没有评论:

发表评论