博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cocos2dx --- 按钮点击居中放大
阅读量:4214 次
发布时间:2019-05-26

本文共 1301 字,大约阅读时间需要 4 分钟。

原文地址:

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

[cpp] 
  1. MenuItem* MenuItemNode::create( const char* normal,Ref* target,SEL_MenuHandler select )  
  2. {  
  3.     auto _normal = Sprite::create(normal);  
  4.     return MenuItemNode::create(_normal,target,select);  
  5. }  
  6.   
  7. MenuItem* MenuItemNode::create( Sprite* normal, Ref* target, SEL_MenuHandler selector )  
  8. {  
  9.     Rect _rect = Rect(normal->getPositionX(),normal->getPositionY(),normal->getContentSize().width,normal->getContentSize().height);  
  10.     auto select =   Sprite::createWithTexture(normal->getTexture(),_rect,false);  
  11.     select->setColor(ccGRAY);  
  12.     select->setScale(1.1f);  
  13.     auto _menuItem = MenuItemSprite::create(normal,select,target,selector);  
  14.     return _menuItem;  
  15. }  

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

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

代码:

[cpp] 
  1. void MenuItemSprite::setSelectedImage(Node* image)  
  2. {  
  3.     if (image != _normalImage)  
  4.     {  
  5.         if (image)  
  6.         {  
  7.             addChild(image, 0, kSelectedTag);  
  8.             //image->setAnchorPoint(Point(0, 0));  
  9.             //替换  
  10.             image->setAnchorPoint(Point((image->getScaleX() -1)/2 , (image->getScaleY()-1)/2));  
  11.         }  
  12.   
  13.         if (_selectedImage)  
  14.         {  
  15.             removeChild(_selectedImage, true);  
  16.         }  
  17.   
  18.         _selectedImage = image;  
  19.         this->updateImagesVisibility();  
  20.     }  
  21. }  

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

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

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

转载地址:http://mvsmi.baihongyu.com/

你可能感兴趣的文章
DB2快速创建测试库
查看>>
利用db2look查看ddl
查看>>
java中的mmap实现
查看>>
Redis的Aof被阻塞原因调查
查看>>
Redis Cluster的FailOver失败案例分析
查看>>
Android Alarm驱动源代码分析(Alarm.c)
查看>>
S3C2440上LCD驱动 (FrameBuffer)实例开发讲解
查看>>
Linux音频编程指南
查看>>
usb-otg-调试心得
查看>>
USB规范浏览--设备和主机规范
查看>>
男人的品位--我们自己的最求
查看>>
Android (Linux) Suspend流程
查看>>
LINUX时间管理
查看>>
定时器的使用
查看>>
为Android加入busybox工具
查看>>
使用技巧busybox
查看>>
如何查看与/dev/input目录下的event对应的设备
查看>>
bootloader-bootable解析
查看>>
bootloader (LK)&&android lk bootloader中相关修改指南
查看>>
SD卡驱动分析--基于高通平台
查看>>