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的acton已经结束"。
下面对于这个委托机制解释一下(结合OC中的委托机制):
VirtualClassC类中定义了一个虚函数,这个函数相当于就是委托方法;
LayerB继承了这个类,那么就要实现这个类中的虚函数,也即实现了委托方法;
LayerA中定义了一个VirtualClassC类实例,而且在LayerB的init方法中:layerA->delegate_ =this;即将LayerA中的委托对象指定为LayerB。