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

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

时间: 2024-10-11 01:01:30

cocos2dx --- 按钮点击居中放大的相关文章

jq图片点击居中放大原始图片兼容ie

1 /* 2 *鍥剧墖澶у浘鏄剧ず 3 */ 4 function imgshow(){ 5 content_div:"";//内容 6 bg_div:"";//背景变暗 7 img_div:"";//图片 8 prev_div:"";//上一页 9 next_div:"";//下一页 10 11 12 $(content_div).find("img").click(function(

Cocos2d-x 点击菜单按键居中放大

配置环境:win7+Cocos2d-x.2.0.3+VS2012 目标 实现一个按键效果,按下去之前显示normal.png的图,按下去之后显示selected.png的图.selected.png尺寸大于normal.png.按键按下去之后呈现一种放大的效果,如果你无法想象,下载个AngryBirds观察下吧. 思路 笔者在这个问题上纠结了一天半,尝试了各种方法,一直以为是自己写得不对导致点击菜单不能居中放大,最后查看源码才发现原来菜单类的对象默认锚点并不是中点,而是原点(0,0).按键前后的

【Cocos2dx】使用CCControlButton创建按钮、按钮点击事件,点击事件中的组件获取,setPosition的坐标问题

按钮不仅在游戏,在任何地方都是不可或缺却又是最基本的东西.在游戏引擎Cocos2dx中也不例外. 下面用一个例子说明Cocos2dx中如何使用按钮,同时,如果在Cocos2dx中获取层,也就是场景.舞台中的组件. 如下图,有一个按钮Clickme,被点击时候与不被点击的时间,其背景图片是不同的.其实就是资源文件夹Resource中早就被玩坏的两个图片,一张CloseNormal.png一张CloseSelected.png被拉伸后的惨状. Cocos2dx的资源文件夹在<[Cocos2dx]资源

基于jQuery点击图像居中放大插件Zoom

分享一款基于jQuery点击图像居中放大插件Zoom是一款放大的时候会从原图像的位置以动画方式放大到画面中间,支持点击图像或者按ESC键来关闭效果.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="page-body"> <div style="width: 80px; height: 80px; margin-right: 10px; padding: 10px; float: left; background:

【IOS】iOS 如何放大按钮点击热区

Apple的iOS人机交互设计指南中指出,按钮点击热区应不小于44x44pt,否则这个按钮就会让用户觉得"很难用",因为明明点击上去了,却没有任何响应. 但我们有时做自定义Button的时候,设计图上的给出按钮尺寸明显要小于这个数.例如我之前做过的自定义Slider上的Thumb只有12x12pt,做出来后我发现自己根本点不到按钮-- 这个问题在WWDC 2012 Session 216视频中提到了一种解决方式.它重写了按钮中的pointInside方法,使得按钮热区不够44×44大小

java在线聊天项目 swt可视化窗口Design 登录框注册按钮点击改变窗口大小——出现注册面板 实现打开登录框时屏幕居中

登录框注册按钮点击改变窗口大小--出现注册面板  首先用swt可视化设计登录窗口如下图: 此时窗口高度为578 没点击注册时高度为301(可自己定) 注意:注册用户的Jpanel 的border选择Title Border,title属性是"注册用户"    布局Layout选择Absolute Layout 接着,对话框窗口设计好后,双击注册按钮,进行代码编辑,在注册按钮的监听代码中增加一个if判断,当等于301,就给改为窗口高度578,否则改为301 因为使用的是匿名内部类,不能直

IOS 开发笔记-基础 UI(3)按钮的使用(放大缩小、改变位置,首位式动画)和学习案例

UIKit框架提供了非常多的UI控件,但并不是每一个都很常用,有些控件可能1年内都用不上,有些控件天天用,比如UIButton.UILabel.UIImageView.UITableView等等,按钮控件是非常重要且比较基础的一个UI控件---UIButton,一般情况下,点击某个控件后,会做出相应反应的都是按钮,按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置. 案例: 功能分析 (1)左下角4个方向按钮,控制头像按钮的位置 (2)右下角分别是放大.缩小按钮,控制

Android实现按钮点击效果(第一次点击变色,第二次恢复)

1.首先创建一个按钮 <Button android:id="@+id/click" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="点击变色" android:background="@drawable/btn_st" android:gravity="center&

【转】Android开发20——单个监听器监听多个按钮点击事件

原文网址:http://woshixy.blog.51cto.com/5637578/1093936 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://woshixy.blog.51cto.com/5637578/1093936 一.单个按钮点击事件的监听 方法一 /** * 从网络上获取图片 * * @author 徐越 * */ public class MainActivity extends Activity { pri