加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 20:38:10 所属栏目:百科 来源:网络整理
导读:原文地址:http://www.jb51.cc/article/p-ewjnepmt-db.html 自定的简单按钮,直接贴代码: [cpp] view plain copy print ? MenuItem*MenuItemNode::create( const char *normal,Ref*target,SEL_MenuHandlerselect) { auto_normal=Sprite::create(normal); re

原文地址:http://www.52php.cn/article/p-ewjnepmt-db.html


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

[cpp] view plain copy print ?
  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);//现在是灰色,可以换成其他如高亮,偏黄等自定义颜色

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读