打造轻量级Windows Phone7 游戏引擎-Samurai 第四话 Button(上)

2024-06-02 21:58

本文主要是介绍打造轻量级Windows Phone7 游戏引擎-Samurai 第四话 Button(上),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Button模块我打算分两部分来介绍,第一部分是介绍绘制精灵,第二部分是正式的Button。

首先什么是Button呢?或者说Button应该是什么样子的呢?

当然了,就我们平常的经验来说,Button不就是一个按钮吗,可以被点击然后实现相应的功能。它往往是一个矩形的区域,里面写上相关的功能,点击一下好像被按下去了一样。大致如此。

Samurai中的Button本质上是多了一些与SAInput交互的接口的精灵类。

什么是精灵类?就是我们用来绘制游戏角色的一系列动作的类。

我们先来定义精灵类的基类SASprite(当然还是抽象类)

 public abstract class SASprite{public Texture2D texture;public Color color;public Vector2 position;public virtual Vector2 Size { get { return new Vector2(rectangle.Width, rectangle.Height); } } //获取Sprite的大小public virtual Rectangle rectangle { get { return new Rectangle((int)position.X, (int)position.Y, (int)Size.X, (int)Size.Y); } }//获取Sprite的碰撞矩形public virtual Rectangle sourceRectangle { get; set; } //截取绘制图像位置public SASprite() { }public SASprite(Texture2D texture) : this(texture, Vector2.Zero) { }public SASprite(Texture2D texture, Vector2 positon) : this(texture, (int)positon.X, (int)positon.Y) { }public SASprite(Texture2D texture, int pos_x, int pos_y){this.texture = texture;this.position = new Vector2(pos_x, pos_y);this.color = Color.White;}//判断是否有相交部分public virtual bool IfCollide(Rectangle rect){return rectangle.Intersects(rect);}//外部调用的Draw接口public void Draw(){Draw(SAGlobal.spriteBatch);}public virtual void Draw(SpriteBatch spriteBatch){spriteBatch.Draw(texture, position, color);}}
这个类是最简单最基本的一个精灵类,它只有一个纹理(图像),有相关的颜色、位置的信息(这里为什么用属性,而且还是virtual的?看了后面你就明白了)

它包含了最基本的“碰撞检测”以及“绘制”的方法。
SASprite有两个子类,一个是只能绘制一帧图像的SASimpleSprite,一个是可以绘制多帧动画的SAActionSprite(好吧,他是SASprite的孙子类):

先来看看SASimpleSprite:

 public class SASimpleSprite:SASprite{public SASimpleSprite() { }/// <summary>/// 在指定位置绘制整张纹理/// </summary>/// <param name="texture">纹理</param>/// <param name="postion">位置</param>public SASimpleSprite(Texture2D texture, Vector2 postion){this.texture = texture;this.sourceRectangle = new Rectangle(0,0,texture.Bounds.Width,texture.Bounds.Height);this.position = position;this.color = Color.White;}/// <summary>/// 直接绘制整张纹理/// </summary>/// <param name="texture">纹理</param>public SASimpleSprite(Texture2D texture): this(texture, Vector2.Zero){ }/// <summary>/// 在指定position绘制指定的sourceRectangle范围内的纹理/// </summary>/// <param name="texture">纹理</param>/// <param name="sourceRectangle">纹理矩形</param>/// <param name="position">位置</param>/// <param name="color">指定颜色</param>public SASimpleSprite(Texture2D texture,Rectangle sourceRectangle,Vector2 position,Color color){this.texture = texture;this.sourceRectangle = 

这篇关于打造轻量级Windows Phone7 游戏引擎-Samurai 第四话 Button(上)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1025197

相关文章

Windows设置nginx启动端口的方法

《Windows设置nginx启动端口的方法》在服务器配置与开发过程中,nginx作为一款高效的HTTP和反向代理服务器,被广泛应用,而在Windows系统中,合理设置nginx的启动端口,是确保其正... 目录一、为什么要设置 nginx 启动端口二、设置步骤三、常见问题及解决一、为什么要设置 nginx

在 Windows 上安装 DeepSeek 的完整指南(最新推荐)

《在Windows上安装DeepSeek的完整指南(最新推荐)》在Windows上安装DeepSeek的完整指南,包括下载和安装Ollama、下载DeepSeekRXNUMX模型、运行Deep... 目录在www.chinasem.cn Windows 上安装 DeepSeek 的完整指南步骤 1:下载并安装

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

用Java打造简易计算器的实现步骤

《用Java打造简易计算器的实现步骤》:本文主要介绍如何设计和实现一个简单的Java命令行计算器程序,该程序能够执行基本的数学运算(加、减、乘、除),文中通过代码介绍的非常详细,需要的朋友可以参考... 目录目标:一、项目概述与功能规划二、代码实现步骤三、测试与优化四、总结与收获总结目标:简单计算器,设计

Windows自动化Python pyautogui RPA操作实现

《Windows自动化PythonpyautoguiRPA操作实现》本文详细介绍了使用Python的pyautogui库进行Windows自动化操作的实现方法,文中通过示例代码介绍的非常详细,对大... 目录依赖包睡眠:鼠标事件:杀死进程:获取所有窗口的名称:显示窗口:根据图片找元素:输入文字:打开应用:依

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

windows端python版本管理工具pyenv-win安装使用

《windows端python版本管理工具pyenv-win安装使用》:本文主要介绍如何通过git方式下载和配置pyenv-win,包括下载、克隆仓库、配置环境变量等步骤,同时还详细介绍了如何使用... 目录pyenv-win 下载配置环境变量使用 pyenv-win 管理 python 版本一、安装 和

Python使用pysmb库访问Windows共享文件夹的详细教程

《Python使用pysmb库访问Windows共享文件夹的详细教程》本教程旨在帮助您使用pysmb库,通过SMB(ServerMessageBlock)协议,轻松连接到Windows共享文件夹,并列... 目录前置条件步骤一:导入必要的模块步骤二:配置连接参数步骤三:实例化SMB连接对象并尝试连接步骤四:

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类