打造轻量级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

相关文章

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

SpringBoot集成LiteFlow工作流引擎的完整指南

《SpringBoot集成LiteFlow工作流引擎的完整指南》LiteFlow作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择,本文将详细讲解Sp... 目录一、LiteFlow核心优势二、SpringBoot集成实战三、高级特性应用1. 异步并行执行2

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

HTML5 中的<button>标签用法和特征

《HTML5中的<button>标签用法和特征》在HTML5中,button标签用于定义一个可点击的按钮,它是创建交互式网页的重要元素之一,本文将深入解析HTML5中的button标签,详细介绍其属... 目录引言<button> 标签的基本用法<button> 标签的属性typevaluedisabled

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF