C++ 的风格我还没转变过来,代码里面还有很多Java风格的代码,对于内存的管理也不是很好。
资源来自http://blog.youkuaiyun.com/cocosviva/article/details/18970717,里面的ControlView
我的代码可以随便玩,转载注明出处
用法 :
new 出来一个CCRocker,参数是摇杆所在的位置
写一个类继承自BaseRockerAdapter,重写onCtrl方法
onCtrl方法的参数key代表着摇杆所摇到的方向,方向key类似小键盘的数字区,比方说6代表右,2代表下,当用户松开摇杆的时候会调用 onCtrl(0)
BaseRockAdapter的registCtrls方法可以注册组合动作,参数是方向key和状态码
当检测到摇杆执行了注册过的动作,将会调用adapter的setstate方法 参数是注册过的状态码,使用时可以通过adapter的getstate方法得到adapter的当前的动作
每一个注册过的状态会保存1秒,之后会被重置为0
最后将Rocker添加到屏幕上就可以使用了
CCRocker *rocker = new CCRocker(ccp(visibleSize.width/2,visibleSize.height/2));
MyAdapter *myAdapter = new MyAdapter;
rocker->setAdapter(myAdapter);
std::vector<int> *ctrls=new std::vector<int>;
ctrls->push_back(6);
ctrls->push_back(3);
ctrls->push_back(2);
myAdapter->registCtrls(ctrls,7);
std::vector<int> *ctrls2=new std::vector<int>;
ctrls2->push_back(2);
ctrls2->push_back(3);
ctrls2->push_back(6);
ctrls2->push_back(9);
ctrls2->push_back(8);
myAdapter->registCtrls(ctrls2,77);
this->addChild(rocker);
如上代码所示,实例化了一个摇杆,位置在屏幕中心,set一个adapter,注册了两个组合动作632和23698,当这两个动作执行的时候,adapter的state分别会被设置为7和
77,持续时间为1S , 最后将摇杆添加进屏幕
代码及示例工程
http://download.youkuaiyun.com/detail/u012016355/6923481
效果图