打造轻量级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 Server服务器上配置FileZilla后,FTP连接不上?

《WindowsServer服务器上配置FileZilla后,FTP连接不上?》WindowsServer服务器上配置FileZilla后,FTP连接错误和操作超时的问题,应该如何解决?首先,通过... 目录在Windohttp://www.chinasem.cnws防火墙开启的情况下,遇到的错误如下:无法与

Python解析器安装指南分享(Mac/Windows/Linux)

《Python解析器安装指南分享(Mac/Windows/Linux)》:本文主要介绍Python解析器安装指南(Mac/Windows/Linux),具有很好的参考价值,希望对大家有所帮助,如有... 目NMNkN录1js. 安装包下载1.1 python 下载官网2.核心安装方式3. MACOS 系统安

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

Windows命令之tasklist命令用法详解(Windows查看进程)

《Windows命令之tasklist命令用法详解(Windows查看进程)》tasklist命令显示本地计算机或远程计算机上当前正在运行的进程列表,命令结合筛选器一起使用,可以按照我们的需求进行过滤... 目录命令帮助1、基本使用2、执行原理2.1、tasklist命令无法使用3、筛选器3.1、根据PID

Python中Windows和macOS文件路径格式不一致的解决方法

《Python中Windows和macOS文件路径格式不一致的解决方法》在Python中,Windows和macOS的文件路径字符串格式不一致主要体现在路径分隔符上,这种差异可能导致跨平台代码在处理文... 目录方法 1:使用 os.path 模块方法 2:使用 pathlib 模块(推荐)方法 3:统一使

MySQL常见的存储引擎和区别说明

《MySQL常见的存储引擎和区别说明》MySQL支持多种存储引擎,如InnoDB、MyISAM、MEMORY、Archive、CSV和Blackhole,每种引擎有其特点和适用场景,选择存储引擎时需根... 目录mysql常见的存储引擎和区别说明1. InnoDB2. MyISAM3. MEMORY4. A

Windows server服务器使用blat命令行发送邮件

《Windowsserver服务器使用blat命令行发送邮件》在linux平台的命令行下可以使用mail命令来发送邮件,windows平台没有内置的命令,但可以使用开源的blat,其官方主页为ht... 目录下载blatBAT命令行示例备注总结在linux平台的命令行下可以使用mail命令来发送邮件,Win

Windows环境下安装达梦数据库的完整步骤

《Windows环境下安装达梦数据库的完整步骤》达梦数据库的安装大致分为Windows和Linux版本,本文将以dm8企业版Windows_64位环境为例,为大家介绍一下达梦数据库的具体安装步骤吧... 目录环境介绍1 下载解压安装包2 根据安装手册安装2.1 选择语言 时区2.2 安装向导2.3 接受协议

Spring AI与DeepSeek实战一之快速打造智能对话应用

《SpringAI与DeepSeek实战一之快速打造智能对话应用》本文详细介绍了如何通过SpringAI框架集成DeepSeek大模型,实现普通对话和流式对话功能,步骤包括申请API-KEY、项目搭... 目录一、概述二、申请DeepSeek的API-KEY三、项目搭建3.1. 开发环境要求3.2. mav

jdk21下载、安装详细教程(Windows、Linux、macOS)

《jdk21下载、安装详细教程(Windows、Linux、macOS)》本文介绍了OpenJDK21的下载地址和安装步骤,包括Windows、Linux和macOS平台,下载后解压并设置环境变量,最... 目录1、官网2、下载openjdk3、安装4、验证1、官网官网地址:OpenJDK下载地址:Ar