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

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

MenuItem* MenuItemNode::create( const char* normal,Ref* target,SEL_MenuHandler select )
{
	auto _normal = Sprite::create(normal);
	return MenuItemNode::create(_normal,target,select);
}

MenuItem* MenuItemNode::create( Sprite* normal, Ref* target, SEL_MenuHandler selector )
{
	Rect _rect = Rect(normal->getPositionX(),normal->getPositionY(),normal->getContentSize().width,normal->getContentSize().height);
	auto select =	Sprite::createWithTexture(normal->getTexture(),_rect,false);
	select->setColor(ccGRAY);
	select->setScale(1.1f);
	auto _menuItem = MenuItemSprite::create(normal,select,target,selector);
	return _menuItem;
}

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

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

代码:

void MenuItemSprite::setSelectedImage(Node* image)
{
    if (image != _normalImage)
    {
        if (image)
        {
            addChild(image, 0, 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:图片的变色可以自已根据需要去调,修改这个方法的参数:

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


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值