分享

cocos2d

 wintelsui 2013-11-06

这篇文章中,我们将用另一个虚拟摇杆类,SneakyInput,这个是开源的,已经有c++版,SneakInput c++的源码下载地址为:https://github.com/Ntran013/SneakyInput

注意,这个下载下来需要修改,因为那是基于老版本的cocos2dx的。OK,我们下面直接上代码:

  1. CCSize wsize=CCDirector::sharedDirector()->getVisibleSize();  
  2.       
  3.     iconSprite=CCSprite::create("Icon-72.png");  
  4.       
  5.     iconSprite->setPosition(ccp(wsize.width/2, wsize.height/2));  
  6.     iconSprite->setTag(123);  
  7.       
  8.     this->addChild(iconSprite, 1);  
  9.       
  10.       
  11.       
  12.      
  13.     float joystickRadius = 220;  
  14.   
  15.       
  16.     joystick=new SneakyJoystick();  
  17.     joystick->autorelease();  
  18.     joystick->initWithRect(CCRectZero);  
  19.     //是否自动回到中心  
  20.     joystick->setAutoCenter(true);  
  21.     //是否支持死亡区域,该区域不会触发  
  22.     joystick->setHasDeadzone(true);  
  23.     //死亡区域半径  
  24.     joystick->setDeadRadius(10);  
  25.       
  26.     SneakyJoystickSkinnedBase *joystickSkin=new SneakyJoystickSkinnedBase();  
  27.     joystickSkin->autorelease();  
  28.     joystickSkin->init();  
  29.     //背景  
  30.     joystickSkin->setBackgroundSprite(CCSprite::create("control_bg.png"));  
  31.     //中心点  
  32.     joystickSkin->setThumbSprite(CCSprite::create("cen.png"));  
  33.     joystickSkin->getThumbSprite()->setScale(1.0f);  
  34.     joystickSkin->setPosition(CCPointMake(joystickRadius,joystickRadius));  
  35.     joystickSkin->setJoystick(joystick);  
  36.       
  37.     this->addChild(joystickSkin);  
  38.      
  39.   
  40.     this->scheduleUpdate();  


//刷新
  1. void HelloWorld::update(float t)  
  2. {  
  3.   
  4.   
  5.     //  getVelocity()到的数值很小 需要放大   
  6.     CCPoint poi = ccpMult(joystick->getVelocity(), 50);  
  7.       
  8.       
  9.       
  10.     //right  
  11.     if ((poi.x  >  0)  && (poi.x - poi.y) >0 && (poi.x + poi.y) > 0){  
  12.           
  13.           
  14.           
  15.         iconSprite->setPosition(ccp(iconSprite->getPosition().x+1, iconSprite->getPosition().y));  
  16.           
  17.           
  18.           
  19.     }  
  20.     //left  
  21.     else if ( (poi.x < 0)  && (poi.x + poi.y) < 0 &&(poi.x - poi.y) < 0) {  
  22.           
  23.   
  24.         iconSprite->setPosition(ccp(iconSprite->getPosition().x-1, iconSprite->getPosition().y));  
  25.   
  26.           
  27.     }  
  28.     //up  
  29.     else if ((poi.y > 0) &&(poi.y - poi.x) > 0 &&(poi.y + poi.x) >0 ){  
  30.           
  31.   
  32.         iconSprite->setPosition(ccp(iconSprite->getPosition().x, iconSprite->getPosition().y+1));  
  33.   
  34.           
  35.           
  36.     }  
  37.     //down  
  38.     else if ((poi.y < 0) &&(poi.y - poi.x) < 0 && (poi.y + poi.x) < 0) {  
  39.           
  40.       
  41.         iconSprite->setPosition(ccp(iconSprite->getPosition().x, iconSprite->getPosition().y-1));  
  42.   
  43.   
  44.     }  
  45.   
  46.   
  47.   
  48. }  


在上面中,我们初始化了一个精灵,并且初始化了SneakyInput,然后再刷新函数里,我们去判断摇杆方向,然后移动精灵。OK,我们看下效果:



OK,就这么简单呐±±±±~~~~~

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多