小技巧-单例和委托

      学习编程也有段时间,参加项目边学习。最近使用单例简单写个弹框,并且使用委托将其实现方法,记录下。

       myFunction.cpp    myFunction.h    myFunctionDelegate.h

      单例:就是全局只有一个,一般是静态的。(自己的理解)

       先写个静态的实现方法:用来初始化myfFunction-> static void showMyFunction(myFunctionDelegate _delegate , CCString* myString,...);这里的showMyFunction接受两个参数:第一个以后用到的delegate ,第二个是传入一个ccString ,第三个是可以传入多个参数。


      static MyFunction* _my;   //这个就是全局静态只有一份

      void MyFunction::showMyFunction(myFunctionDelegate _delegate , CCString* myString,...)

{    

  if(!_my)    //检查是否已经存在,不存在就创建

{

_my = new MyFunction();

                        _my->init(); //调用父类的Layer::init

_my->retain();//不要忘记

}

//就是对传入数据处理参考CCArray里面传多个参数写法:我理解就是把传入的数据放到一个数组里面保存

va_list args;

va_start(args ,cBtn);


CCArray* pArray = CCArray::create();

         if(pArray && cBtn)

{

pArray->addObject(cBtn);

CCObject *i = va_arg(args,CCObject*);

                         while(i)

                          {

pArray->addObject(i);

i = va_arg(args , CCObject*);

                          }     

}else

{

CC_SAFE_DELETE(pArray);

}

}

va_end(args);

       

        if(_my->_state == 0)  

        {

_my->show(delegate,myString,pArray);

         }else

{

//关闭再从新打开,之前要保存好数据

if(_my->_string) _my->string->release();

_my->_string = myString;

                if(_my->_myArray) _my->_myArray->release();

_my->myArray = CCArray::createWithArray(pArray);

_myArray->retain();  //记得在以后销毁时候release

                _my->close(delegate , _String,pArray);  //做就是移除所有再重新打开

                 // _state = 0;

                 //_my->removeAllChildren();  _my->removeFromParentAndCleanup(false);

                 //_my->show(delegate,pArray,_string);

}

  委托:有点像obj-C里面的

  1. myDelegate.h

   写一个class 名字myDelegate

    里面使用接口:virtual void onClick() = 0;

  2. myFunction.h  -》引入1的头文件-》定义一个delegate : myDelegate _delegate;

  3.传入的deleagte 付给_delegate   _delegate = delegate;  //重要。。。。。

  4.Item响应点击事件(CCMenuItemSprite) _delegate ->onClick();

  5.直接在想使用myFunction这个类中使用 myFunction::showMyFunction(this,///);               6.onClick()方法实现就再你想用的类中写具体。记得要要继承myDelegate 

 






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值