

🧛♂️iecne个人主页::iecne的学习日志
💡每天关注iecne的作品,一起进步
💪学C++必看iecne
本文专栏:【C++游戏引擎】.
🐳希望大家多多支持🥰一起进步呀!
哈喽大家好,我是iecne,本期为大家带来的是CPP/C++【游戏引擎Easy2D】想要做游戏但不会按钮鼠标控制?十分钟教会你Button按钮类。包教包会,快来看看吧!
引擎支持 Visual Studio 2013 及以上版本,如果你使用的是较低版本的 VS,那么你需要考虑一下更新你的编译器了
如何根据据Button制作鼠标控制按钮类
本实践旨在通过多个代码的案列,让大家理解和掌握如何使用Easy2D引擎来将Button解释并且会运用

文章目录
对于编程而言,初学者最需要的不是技能,而是成就感。
如果你喜欢用 C/C++ 编写自己的小游戏,那么 Easy2D 将是个不错的选择,它大大简化了游戏制作过程,可以帮助你快速开发 Windows 上的 2D 小游戏。
它的特点和它的名字一样,Everything is Easy!
使用简易安装器
运行里面的 install.bat 文件进行安装。
点击此链接进行下载(纯免费,给官方搞成了VIP)
点击下载
安装程序会检测您已经安装的 Visual Studio 版本,并根据您的选择将对应库文件解压至 VS 库目录下。
Easy2D 不支持 VS2012 及以下的版本(包括 VC6.0),如果你使用的是低版本的 VS,那你需要尝试一下新版的 Visual Studio 了。
安装环境:
操作系统:Windows 7 及以上操作系统。
编译环境:Visual Studio 2013 (x86 & x64) 及以上版本。
收藏本文找到更方便
这类讲述使用方式和注意事项
Button 表示一个按钮,你可以把一段文字或者一个精灵变成按钮,它的使用方式很简单
创建一个精灵
auto btnSprite = gcnew Sprite(L"按钮图片.png");
创建点击按钮后的回调函数
auto callback = []()
{
// 点击按钮,进入一个新场景
SceneManager::enter(gcnew Scene);
};
把精灵变成一个按钮,并设置点击按钮后的回调函数
auto button = gcnew Button(btnSprite, callback);
把按钮加入场景
scene->addChild(button);
Warning
把精灵变为按钮后,不需要再将精灵加入到场景中,否则将产生错误。Debug 状态下引擎可以检测这种错误,在错误产生时中断程序,并在控制台中给出提示。
普通的按钮有四个状态:正常、鼠标移入、按下、禁用,你可以设置按钮在四种状态下显示不同的精灵或文本
// 创建一个精灵,按钮普通状态显示
auto btnNormal = gcnew Sprite(L"按钮图片.png");
// 创建一个精灵,按钮按下状态显示
auto btnSelect = gcnew Sprite(L"按下时图片.png");
// 创建点击按钮后的回调函数
auto callback = []()
{
// 点击按钮,进入一个新场景
SceneManager::enter(gcnew Scene);
};
// 创建按钮
auto button = gcnew Button;
button->setNormal(btnNormal);
button->setSelected(btnSelect);
button->setClickFunc(callback);
// 把按钮加入场景
scene->addChild(button);
如果你想让一个按钮停止工作,可以把它设为禁用状态
button->setEnable(false);
作者曾做过一个通讯录,在这里展现一下按钮部分
//通讯录和+符号
void TXLPLUS()
{
//设置通讯录字号
auto TXL_text = gcnew Text(L"通讯录");
//放大1.5倍
TXL_text->setScale(1.2);
// 创建文字样式
auto style = Text::Style();
//设置颜色为黑色
style.color = Color::Black;
Font font = Font(L"黑体", 40, Font::Weight::Bold, true);
// 设置字体
TXL_text->setFont(font);
// 显示在屏幕上
TXL_text->setAnchor(0.5f, 0.5f);
TXL_text->setPos(80, 50);
//应用场景
b_changjing->addChild(TXL_text);
// 创建开始按钮
auto startBtn = gcnew Button;
startBtn->setScale(2.0f, 2.0f);
// 设置按钮图片
startBtn->setNormal(gcnew Sprite(L"res/plus002.png"));
// 设置按钮被选中时的图片
startBtn->setSelected(gcnew Sprite(L"res/plus001.png"));
// 获取鼠标位置
Point mousePos = Input::getMousePos();
//判断
if (mousePos.x >= 530 && mousePos.x <= 521)
{
if (mousePos.y >= 30 && mousePos.y <= 51)
{
startBtn->setDisabled(gcnew Sprite(L"res/plus003.png"));
}
}
// 设置按钮位置
startBtn->setPos(530,30);
// 添加开始按钮
b_changjing->addChild(startBtn);
}
//查询通讯录
void CHAXUN()
{
//以这种形式打印变量
//int s = 1000;
//auto test = gcnew Text(FormatString(L"雷数 %d", s));
// 将 Text 添加到场景中
//b_changjing->addChild(test);
// 创建开始按钮
auto startBtn = gcnew Button;
startBtn->setScale(1.0f, 1.0f);
// 设置按钮图片
startBtn->setNormal(gcnew Sprite(L"res/查询001.png"));
// 设置按钮被选中时的图片
startBtn->setSelected(gcnew Sprite(L"res/查询002.png"));
// 获取鼠标位置
Point mousePos = Input::getMousePos();
//**************
// 判断省略
//**************
// 设置按钮位置
startBtn->setPos(150, 150);
// 添加开始按钮
b_changjing->addChild(startBtn);
XUNWENCK();
}
Easy2D 按照以下规律命名函数:
小驼峰式命名法则,第一个单词小写,后面的单词首字母大写,如Window::setTitle
所有函数均按照动词+名语形式命名,如Logger::showConsole
获取对象的属性值:get+属性名,如Node::getWidth
修改对象的属性值:set+属性名,如Node::setPos
获取对象的状态(bool值):is+状态名,如Node::isVisiable
本节课主要是讲解了Easy2D引擎实现的教程,至此该课示例的思想博主已经真真切切彻彻底底分享完了,相信大家对这个逻辑有了一定的理解,大家可以自己动手敲敲代码,感受一下,包教包会。若有任何侵权和不妥之处,请私信于我,定积极配合处理,看到必回!!!
帅的人已然点赞收藏关注,而丑的人还在犹豫,被犹豫了,快三连吧!
原创不易,还希望各位大佬支持一下
点赞,你的认可是我创作的动力!
收藏,你的青睐是我努力的方向!
评论,你的意见是我进步的财富!
感谢每一个观看本篇文章的朋友,更多精彩敬请期待~( ̄▽ ̄~)~:
iecne的博客
若有任何侵权和不妥之处,请私信于我,定积极配合处理,看到必回!!!

一、Eolink介绍Eolink是国内起步较早的API全生命周期管理平台。产品能力覆盖API开发-运维-开放交易,实现API研发管理、API快速测试、API自动化测试、API监控、API微服务网关、API对外开放等企业深度场景。使用它能满足我们各种API管理和测试、监控等需求,特别是在自动化测试方面,它提供的建设自动化的功能极大的提高了我们开展自动化接口测试的效率:下面会通过使用Eolink编写一个流程的自动化测试用例来分享讲解一下在Eolink中如何开展自动化及使用教程。目录一、Eolink介绍二、自动化实战1)创建测试项目2)编写用例2.1用户登录2.2创建项目2.3修改项目2.4删除项目
我正在使用具有可扩展行功能的表格。单击展开图标时该行会展开,您可以查看示例HERE.但是,我想要做的是,entirerow可点击和切换展开和折叠行就像点击展开图标时一样。请帮忙。这是我的标记:el-table(:data="tableData")el-table-column(label="EmployeeName",prop="userName")el-table-column(label="CompanyName",prop="companyName")el-table-column(type="expand",align="right")template(slot-scope="
我看过Highcharts的文档,但找不到任何仅向图表添加一个可点击点的示例。没有意义或所有这些都是可点击的。是否可以只绑定(bind)一点点击?提前致谢! 最佳答案 这不是很明显。您知道可以将数据作为Point对象数组传递给图表,如下所示:series:[{data:[{name:'Point1',x:0,y:1},{name:'Point2',x:1,y:5}]}]但是你可能不知道任何Point都可以有自己的事件。所以你可以这样做:series:[{data:[{name:'Point1',x:0,y:1,events:{cli
我有一个包含对象的3D数组:[[{id:1},{id:2}],[{id:3}],[{id:3},{id:4}]]如何展平它,包括删除重复的id参数?[{id:1},{id:2},{id:3},{id:4}]我认为下划线会有所帮助 最佳答案 vara=[[{id:1},{id:2}],[{id:3}],[{id:3},{id:4}]];varflattened=_(a).flatten().uniq('id').value();当然你必须包括lodash到您的网页。 关于javascrip
我目前正在使用dynaTreejQuery插件来渲染一棵树。Rootnode1Childnode1Childnode1-1Childnode1-2Childnode2Rootnode2Javascript-$('.ajaxify').ajaxify({target:'#container'});$(function(){$("#tree").dynatree({title:"SampleTheming",//Imagefolderusedfordata.iconattribute.imagePath:"skin-custom/",onSelect:function(node){aler
我的网站在map上有多个带有可点击图标的弹出框(只是一个带有背景图片的div):单击这些图标时,会显示一个弹出窗口。这个弹出窗口有一个轮播,其中包含带链接的文本:当我在弹出窗口外单击时,所有弹出窗口都被隐藏。这应该可以正常工作。我从thisStackOverflowquestion得到了代码。但是当您在弹出窗口外单击以再次隐藏它时,真正的问题出现了。弹出窗口已隐藏,但它仍在DOM中。这意味着链接仍然可以点击!当我单击加号图标隐藏弹出窗口时,弹出窗口被隐藏(已删除?),但是当单击加号之外(即页面上的任何位置)时,弹出窗口仍然存在(但不可见)就在上方.求助!这让我很恼火..:(编辑:可能值
说起游戏开发,大家一般会觉得控制角色移动和制作血条哪个难呢?或许都会觉得血条比较难吧。是的,正是如此。那么我们让我们来看看血条该怎么做吧 这是效果图受伤后是这样的首先是创建一张Canvas画布这个画布会很大 相比之下我们的小地图就显得微不足道了随后我们创建两个image元素将图片放入sourceimage中就行了我这里图方便就直接把头像作为子元素挂载在这个状态栏上了 注意先后排布好就行随后我们要做的是创建一个image对象,然后搜索Mask组件 变为Mask,然后我们创建子对象image这个是血条我们就叫它HealthBar然后会是这个状态注意蓝色血条里image中的imageType改为Si
首先打开环境 查看源码发现有个base64解开后发现是图片源码这让我联想到地址栏中的参数 发现它经过了两次base64编码和一次十六进制编码Base64在线编码解码|Base64加密解密-Base64.usCTF在线工具-Hex在线编码|Hex在线解码|十六进制编码转换(hiencode.com) 解开后发现是图片名 我们反向操作一波查看index.php的源码 696e6465782e706870TmprMlpUWTBOalUzT0RKbE56QTJPRGN3下面传参 进行base64解密 得到源码';die("xixi~noflag");}else{$txt=base64_encod
我想知道是否有任何使用JavaScript在客户端运行的二维图形绘制库?基本思想是您可以在浏览器中放置一个绘图,用户可以更改X和Y比例和限制、放大和缩小等内容,而无需不断地从服务器重新加载网页。数据本身将通过AJAX获取,如果用户想使用重型工具,这将允许用户直接从服务器wget获取数据。类似于Python的matplotlib的2D部分。这是我很久以前看过的东西,然后决定开发一些只在服务器端生成SVG的代码(使用内置的eCos网络服务器)会更快,但现在我'我一直在阅读Prototype和jQuery之类的东西,我想知道是否有人已经这样做了。 最佳答案
我非常了解HTML5Canvas,我了解使用循环等的基础知识和动画。我正在使用的演示:(单击以制作形状)http://henry.brown.name/experiments/box2d/example-canvas.html我不太熟悉的是Box2D。我正在使用Box2DWeb端口,听说它比Box2D-js更新,我不确定哪个最好。我知道如何初始化“世界”并且我可以在世界中放置对象。然后,我使用Step为世界设置动画-但是到目前为止,为了在屏幕上显示它,我只能使用debugdraw来让它工作,因为它基本上会为你做所有事情。我不想使用调试绘图,而是使用Canvas来绘制,例如一辆汽车,而不