Layer是一个抽象类,表示游戏中的一个可视元素。上节中讲述的Sprite就是Layer的一种。每个Layer都有位置(取决于它的左上角在其容器中的位置),宽度,高度和可视与否。 Layer的子类必须实现一个paint(Graphics)方法,使得它们能够被渲染。如果该Layer可见。 Layer从它的左上角开始渲染,其当前坐标(x,y)是相对于原始的Graphics对象。当渲染Layer时,应用程序可以使用剪辑和坐标变换来控制并限制渲染的区域。实现此方法的子类有责任检查Layer是否可见,如果不可见,这个方法应该不做任何事。此外,调用此方法不应该改变Graphics对象的属性(剪辑区域,坐标变换,绘图颜色等等)。
Layer的位置坐标(x,y)通常都是相对于Graphics对象的坐标系统,该对象通过Layer的paint()方法传递。这个坐标系统被称为绘图坐标系统。一个Layer的初始位置是(0,0)。
6.4.1 TiledLayer
TiledLayer由一系列单元格组成,单元格可被一组贴图填充。这个类允许不必使用特别大的图像来创建大的虚拟层。这个技术在2D游戏中被广泛用于创建特别大的可卷动的背景。
贴图(Tiles)
贴图用于填充TiledLayer的单元格,由一个单一的可变或不可变的Image对象提供。图像被切割成一系列相同大小的贴图;贴图大小随Image一同指定。如下图所示,相同的一系列贴图可以以不同的方式存储,取决于对游戏开发者而言方便与否。
每个贴图都被赋予一个唯一的索引号。位于图像最左上角的贴图被赋予索引号1。剩下的贴图按照一行一行的顺序(首先是第一行,然后是第二行,以此类推)依次递增。这些贴图被视为静态贴图(static tiles),因为贴图和图像内容有固定的联系。
当实例化一个TiledLayer时,一组静态贴图就被创建了;也可以在任何时候调用setStaticTileSet(javax.microedition.lcdui.Image, int, int)方法来更新它们。
除了静态贴图外,开发者同样能够定义一系列动态贴图(animated tiles)。一个动态贴图就是一个虚拟的贴图,它与一个静态贴图动态地联系在一起;一个动态贴图的外观就是当时与之联系的静态贴图。
动态贴图允许开发者能非常容易地改变一组单元格的外观。对于用动态贴图填充的单元格而言,改变它们的外观仅仅需要简单地改变与动态贴图关联的静态贴图即可。此技术对于动画显示大的重复性区域非常有用,因为不需要显式地改变大量单元格的内容。
动态贴图可以通过调用createAnimatedTile(int)方法来创建,该方法返回一个索引号,用于标记新创建的动态贴图。动态贴图的索引号总是负数,并且也是连续的,起始值为-1。一旦被创建,与之关联的静态贴图可以通过调用setAnimatedTile(int, int)方法来改变。
单元格(Cells)
TiledLayer由相同大小的单元格组成;每行和每列的单元格数目在构造方法中指定,实际大小取决于贴图的大小。
每个单元格的内容由贴图索引号指定;一个正的贴图索引号代表一个静态贴图,一个负的贴图索引号代表一个动态贴图。索引号为0的贴图表示该单元格为空;为空的单元格是完全透明的,并且不会被TiledLayer绘制任何内容。缺省的,所有单元格都包含索引号为0的贴图。
分享到:
相关推荐
### 韩顺平编写的Java学习笔记概览 #### Java平台分类与运行机制 - **J2SE(Java 2 Platform, Standard Edition)**: 标准版Java开发平台,适用于桌面应用程序开发。 - **J2EE(Java 2 Platform, Enterprise ...
"Java 学习笔记" Java 是一种面向对象的程序语言,具有跨平台的可能性。Java 的特性包括简单、面向对象、网络、解译、坚固、安全、可携和高效能。Java 平台包括 Java SE、Java EE 和 Java ME, Java SE 是 Java ...
### Java私塾学习笔记整理 #### 第一章:Java入门 **一、Java是什么?** Java是一种广泛使用的高级编程语言,由Sun Microsystems于1995年推出。它旨在为跨平台开发提供一种通用的语言环境,使开发者能够在任何...
JAVA学习笔记最新ppt版1 JAVA 是一种面向对象的程序语言,具有更高的跨平台可能性。它是 Sun 公司 GreenProject 中撰写 Star7 应用程序的一个程序语言,由 James Gosling 创造。Java 的特性包括简单、面向对象、...
### Java课堂笔记学习 #### 软件定义与软件开发 - **软件**:软件是运行在硬件之上的一组指令集,这些指令集能够完成特定的功能。软件开发过程包括设计和编码两个主要阶段。 #### 编程语言的重要性 - **编程语言...
### Java学习笔记知识点详解 #### Java 平台与开发概述 - **Java平台分类:** - **J2SE(Java SE):** 标准版,适用于桌面应用程序开发。 - **J2EE(Java EE):** 企业版,专为Web应用和服务端应用程序设计。 -...
在“Java学习笔记(必看经典)”中,我们可以期待涵盖以下几个关键知识点: 1. **基础语法**:包括变量声明、数据类型(如基本类型和引用类型)、运算符、流程控制语句(如if条件语句、for循环、while循环和switch...
【JAVA基础学习笔记】 在JAVA基础的学习中,涵盖了多个核心概念和编程技巧。以下是各章节的重点内容: 第一章:首先,我们需要了解JAVA的技术平台,包括Java SE(标准版)、Java EE(企业版)和Java ME(微型版)...
15. **Java SE、Java EE和Java ME**:了解这三种Java平台的不同用途,分别是标准版(SE)用于桌面应用,企业版(EE)用于服务器端应用,微型版(ME)则用于嵌入式设备。 以上只是Java初级学习的部分核心概念,随着...
Java学习笔记概述 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems开发,现在由甲骨文公司维护。它的设计目标是具有简单性、面向对象、健壮性、安全性、可移植性和高性能等特性。本笔记主要围绕Java的...
这只是Java学习笔记的基础部分,随着深入,还会涵盖类、对象、异常处理、集合框架、IO流、网络编程、多线程、设计模式等多个方面。理解并熟练掌握这些知识点,将有助于你全面地理解和运用Java,成为一名合格的Java...
10. **JavaSE、JavaEE与JavaME**:分别代表Java的标准版、企业版和微型版,笔记可能阐述它们的区别和应用场景。 11. **实践项目**:为了巩固理论知识,学习笔记通常会包含一些实战项目,如编写简单的桌面应用程序...
### Java+JDK+6 学习笔记知识点详解 #### 一、Java 概述 - **起源与发展:** - Java 最初是由 Sun Microsystems 的 Green Project 开发出来的编程语言,最初是为了创建一个名为 Star7 的应用程序。 - 1995 年 5 ...
【Java学习笔记】 Java是一种广泛使用的编程语言,以其跨平台性、面向对象特性和安全性而闻名。Java的优点在于它的字节码技术使得程序能够在不同操作系统上运行,无需重新编译,这得益于Java虚拟机(JVM)。此外,...
本文档是韩顺平 Java 从入门到精通视频教程的学习笔记整理,共 94 讲,涵盖 Java 基础知识、Java SE、Java EE、Java ME 等方向的内容。 Java 基础知识 1. Java 平台:Java 平台有三个主要版本:J2SE、J2EE、J2ME。...
【Java学习笔记】 Java是一种广泛使用的面向对象的编程语言,其设计目标是具有高效率、可移植性和可读性。本笔记将围绕Java的历史、重要性、安装配置、语法基础等方面进行详细介绍。 ### 1. Java的发展与意义 ...