首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

Cocos2d-x 兑现委托机制

2013-09-05 
Cocos2d-x 实现委托机制在 点击打开链接 这里看到一篇关于如何实现委托机制的文章,感觉有点意思,由于这篇

Cocos2d-x 实现委托机制

在 点击打开链接 这里看到一篇关于如何实现委托机制的文章,感觉有点意思,由于这篇文章只是讲了个思路,所以我自己实践了一下,写了一个demo。

实现委托机制demo的情景描述:

LayerA是一个层,里面有个sprite,一旦A被初始化,这个sprite就会执行一个action;LayerB是另一个层。我在LayerB中加入了LayerA,但是要等到A中的那个sprite的action执行完毕后,B再立刻执行另外一个方法。

问题来了,我怎么在LayerB中知道LayerA中的sprite的action执行完了,那么解决的方法就是使用委托机制。

下面直接通过我的demo进行讲解。

(1)首先创建一个VirtualClassC类,里面有一个虚函数。

 // create a scene. it's an autorelease object    CCScene *pScene = LayerB::scene();    // run    pDirector->runWithScene(pScene);


显然,程序运行的效果是,LayerA中的sprite执行一个旋转动作后,LayerB就会执行doNext方法,在终端中输出

"LayerA中sprite的acton已经结束"。


下面对于这个委托机制解释一下(结合OC中的委托机制):

VirtualClassC类中定义了一个虚函数,这个函数相当于就是委托方法;

LayerB继承了这个类,那么就要实现这个类中的虚函数,也即实现了委托方法;

LayerA中定义了一个VirtualClassC类实例,而且在LayerB的init方法中:layerA->delegate_ =this;即将LayerA中的委托对象指定为LayerB。



热点排行