cocos2dx --- 按钮点击居中放大

前端之家收集整理的这篇文章主要介绍了cocos2dx --- 按钮点击居中放大前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

原文地址:http://www.jb51.cc/article/p-ewjnepmt-db.html


自定的简单按钮,直接贴代码

  1. MenuItem*MenuItemNode::create(constchar*normal,Ref*target,SEL_MenuHandlerselect)
  2. {
  3. auto_normal=Sprite::create(normal);
  4. returnMenuItemNode::create(_normal,target,select);
  5. }
  6. MenuItem*MenuItemNode::create(Sprite*normal,SEL_MenuHandlerselector)
  7. Rect_rect=Rect(normal->getPositionX(),normal->getPositionY(),normal->getContentSize().width,normal->getContentSize().height);
  8. autoselect=Sprite::createWithTexture(normal->getTexture(),_rect,false);
  9. select->setColor(ccGRAY);
  10. select->setScale(1.1f);
  11. auto_menuItem=MenuItemSprite::create(normal,select,selector);
  12. return_menuItem;
  13. }

但是很可惜,这种放大是基于锚点(0,0)的,是向右上方放大,非常别钮,需要让其居中放大,需要修改cocos2dx源码:

找到CCMenuItem.cpp 修改方法:void MenuItemSprite::setSelectedImage(Node* image)

代码

@H_301_128@ voidMenuItemSprite::setSelectedImage(Node*image)
  • if(image!=_normalImage)
  • if(image)
  • addChild(image,kSelectedTag);
  • //image->setAnchorPoint(Point(0,0));
  • //替换
  • image->setAnchorPoint(Point((image->getScaleX()-1)/2,(image->getScaleY()-1)/2));
  • if(_selectedImage)
  • removeChild(_selectedImage,true);
  • }
  • _selectedImage=image;
  • this->updateImagesVisibility();
  • }

  • 用上面自定义的Node创建一个按钮,点击试下,居中放大,而且变色,灰常的不错,而且还节省资源。

    PS:图片的变色可以自已根据需要去调,修改这个方法的参数:

    @H_301_128@ select->setColor(ccGRAY);//现在是灰色,可以换成其他如高亮,偏黄等自定义颜色

    猜你在找的Cocos2d-x相关文章