博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cocos2dx --- button点击放大中心
阅读量:4581 次
发布时间:2019-06-09

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

自定义简单button,直接附着到代码:

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创建一个button,点击试下,居中放大,并且变色。灰常的不错。并且还节省资源。

PS:图片的变色能够自已依据须要去调。改动这种方法的參数:

select->setColor(ccGRAY);//如今是灰色。能够换成其他的,如高亮。淡黄等自己的自定义颜色

版权声明:本文博客原创文章,博客,未经同意,不得转载。

转载于:https://www.cnblogs.com/blfshiye/p/4733731.html

你可能感兴趣的文章