歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

SneakInput在cocos2d-x下的示例

看了很多教程和文檔,無論2d還是2d-x都推薦使用開源的SneakInput作為其觸屏的手柄組件。

因此我也下載了它的源碼並將其融合到自己的游戲裡,整個演示的源碼下載地址為:

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2012年資料/8月/11日/SneakInput在cocos2d-x下的示例/

我的環境為vs2010 + cocos2d-1.0.1-x-0.12.0

另外SneakInput c++的源碼下載地址為:https://github.com/Ntran013/SneakyInput

經過自己的試驗,發現在我的環境下並不需要修改SneakInput的源碼,將源碼解壓後,放在自己的項目裡就可以正常使用。

SneakInput主要由2部分組成joystick和button。

使用button的代碼:

  1. float buttonRadius=50;        
  2.   
  3. buttonA=new SneakyButton();  
  4. buttonA->autorelease();  
  5. buttonA->initWithRect(CCRectZero);  
  6. buttonA->setIsToggleable(false);  
  7. buttonA->setIsHoldable(true);          
  8.   
  9. SneakyButtonSkinnedBase *buttonASkin=new SneakyButtonSkinnedBase();  
  10. buttonASkin->autorelease();  
  11. buttonASkin->init();  
  12. buttonASkin->setPosition(ccp(size.width-buttonRadius,buttonRadius));  
  13. buttonASkin->setDefaultSprite(CCSprite::spriteWithFile("button-default.png"));  
  14. // buttonASkin->setDisabledSprite(CCSprite::spriteWithFile("button-disabled.png"));   
  15. buttonASkin->setPressSprite(CCSprite::spriteWithFile("button-pressed.png"));  
  16. buttonASkin->setActivatedSprite(CCSprite::spriteWithFile("button-activated.png"));  
  17. buttonASkin->setButton(buttonA);  
  18.   
  19. this->addChild(buttonASkin);  

使用jostick的代碼:

  1. float joystickRadius=50;  
  2.   
  3. joystick=new SneakyJoystick();  
  4. joystick->autorelease();  
  5. joystick->initWithRect(CCRectZero);  
  6. joystick->setAutoCenter(true);  
  7. joystick->setHasDeadzone(true);  
  8. joystick->setDeadRadius(10);  
  9.   
  10. SneakyJoystickSkinnedBase *joystickSkin=new SneakyJoystickSkinnedBase();  
  11. joystickSkin->autorelease();  
  12. joystickSkin->init();  
  13. joystickSkin->setBackgroundSprite(CCSprite::spriteWithFile("button-disabled.png"));  
  14. joystickSkin->setThumbSprite(CCSprite::spriteWithFile("button-disabled.png"));  
  15. joystickSkin->getThumbSprite()->setScale(0.5f);  
  16. joystickSkin->setPosition(ccp(joystickRadius,joystickRadius));  
  17. joystickSkin->setJoystick(joystick);  
  18.   
  19. this->addChild(joystickSkin);  
然後在update函數中獲取按鈕狀態:
  1. #define FIRE_INTERVAL 0.3f   
  2. float HelloWorld::fireTime=0;  
  3. void HelloWorld::update(ccTime dt)  
  4. {  
  5.     CCPoint velocity=joystick->getVelocity();  
  6.     if(velocity.x!=0||velocity.y!=0)  
  7.     {  
  8.         CCLOG("joystick:[%f,%f]",velocity.x,velocity.y);  
  9.     }  
  10.   
  11.     fireTime+=dt;  
  12.       
  13.     if(buttonA->getIsActive()&&fireTime>=FIRE_INTERVAL)  
  14.     {  
  15.         CCLOG("buttonA pressed.");  
  16.         fireTime=0;  
  17.     }  
  18. }  
Copyright © Linux教程網 All Rights Reserved