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)

代码

    voidMenuItemSprite::setSelectedImage(Node*image)
  1. if(image!=_normalImage)
  2. if(image)
  3. addChild(image,kSelectedTag);
  4. //image->setAnchorPoint(Point(0,0));
  5. //替换
  6. image->setAnchorPoint(Point((image->getScaleX()-1)/2,(image->getScaleY()-1)/2));
  7. if(_selectedImage)
  8. removeChild(_selectedImage,true);
  9. }
  10. _selectedImage=image;
  11. this->updateImagesVisibility();
  12. }

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

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

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

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