greenfoot
Class World

java.lang.Object
  extended by greenfoot.World

public abstract class World
extends java.lang.Object

World是一个承载Actor游戏对象们的世界(或场景)。它本身也是一个二维的坐标格网络。

所有的场景中的Actor对象都与某个World对象相关联并可访问该World。World对象的坐标格尺寸可以在构造它的时候被定义,并且该值一旦被定义,便会以常量的形式存在,无法再次改变。简易的游戏案例或许会采用一些较大的坐标格,从而使得每个对象都可以被一个坐标格完全包含。而更为复杂的游戏案例则可能会采取小一些的坐标格(缩小至单个像素大小),从而实现更细粒度的定位和更为平滑的动画。

World对象的背景可用图片或贴图来装饰。

版本:
2.4
作者:
Poul Henriksen, Michael Kolling
译者:
Eric Pan(Upupzealot)

翻译有误请联系:hzxjhspxn@163.com

参见:
Actor

Constructor Summary
World(int worldWidth, int worldHeight, int cellSize)
          构造一个新的World对象。
World(int worldWidth, int worldHeight, int cellSize, boolean bounded)
          构造一个新的World对象。
 
Method Summary
 void act()
          World对象的act方法。
 void addObject(Actor object, int x, int y)
          向场景中添加一个actor对象。
 GreenfootImage getBackground()
          返回本world的背景图片。
 int getCellSize()
          返回坐标格尺寸(以像素为单位)
 java.awt.Color getColorAt(int x, int y)
          返回坐标格中心点的颜色。
 int getHeight()
          返回场景高度(以坐标格为单位)。
 java.util.List getObjects(java.lang.Class cls)
          获得场景中的所有对象,或指定类型的所有对象。
 java.util.List getObjectsAt(int x, int y, java.lang.Class cls)
          返回位于指定坐标格的所有对象。
 int getWidth()
          返回场景宽度(以坐标格为单位)。
 int numberOfObjects()
          获得场景中actor对象当前的数目。
 void removeObject(Actor object)
          从场景中移除指定的一个对象。
 void removeObjects(java.util.Collection objects)
          从场景中移除指定的一系列对象。
 void repaint()
          重绘整个场景。
 void setActOrder(java.lang.Class... classes)
          设置场景中各对象的act顺序。
 void setBackground(GreenfootImage image)
          设置指定的图片作为本world的背景。
 void setBackground(java.lang.String filename)
          设置指定的图片文件作为本world的背景。
 void setPaintOrder(java.lang.Class... classes)
          设置场景中各对象的绘制顺序。
 void started()
          此方法会在程序开始(或恢复)运行时被Greenfoot系统调用。
 void stopped()
          此方法会在程序暂停运行时被Greenfoot系统调用。
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

World

public World(int worldWidth,
             int worldHeight,
             int cellSize)
构造一个新的World对象。场景的尺寸(以坐标格数目为单位)和坐标格的尺寸(以像素为单位)必须在此指定。

参数:
worldWidth - 场景的宽度(以坐标格为单位)
worldHeight - 场景的高度(以坐标格为单位)
cellSize - 坐标格尺寸(以像素为单位)

World

public World(int worldWidth,
             int worldHeight,
             int cellSize,
             boolean bounded)
构造一个新的World对象。场景的尺寸(以坐标格数目为单位)和坐标格的尺寸(以像素为单位)必须在此指定。本构造方法允许设置World对象是否有界。在无界的场景中,actor对象们可以运动到场景的边缘以外。(译者注:默认构造有界的场景,此时场景中的actor对象的坐标将被限定在场景的宽、高之内)。

参数:
worldWidth - 场景的宽度(以坐标格为单位)
worldHeight - 场景的高度(以坐标格为单位)
cellSize - 坐标格尺寸(以像素为单位)
bounded - 场景中的actor对象是否应被限定在场景的宽、高之内
Method Detail

setBackground

public final void setBackground(GreenfootImage image)
设置指定的图片作为本world的背景。若图片的像素尺寸大于场景的像素尺寸,图片的边缘将被自动裁剪。若它的尺寸小于场景的,那它将被平铺从而充满整个场景。因而,一个尺寸等同于坐标格大小的地形图案可以很方便地作为背景被添加到场景之中。

参数:
image - 显示用图片
参见:
setBackground(String)

setBackground

public final void setBackground(java.lang.String filename)
                         throws java.lang.IllegalArgumentException
设置指定的图片文件作为本world的背景。支持jpeg、gif和png格式。若图片的像素尺寸大于场景的像素尺寸,图片的边缘将被自动裁剪。若它的尺寸小于场景的,那它将被平铺从而充满整个场景。因而,一个尺寸等同于坐标格大小的地形图案可以很方便地作为背景被添加到场景之中。

参数:
filename - 含显示用背景图的图片文件。
抛出:
java.lang.IllegalArgumentException - 倘若无法加载指定的图片。(译者注:如该文件不存在或错误的文件名。)
参见:
setBackground(GreenfootImage)

getBackground

public GreenfootImage getBackground()
返回本world的背景图片。对此图片进行绘制操作的同时会更改场景的背景。

返回:
场景背景图片

getColorAt

public java.awt.Color getColorAt(int x,
                                 int y)
返回坐标格中心点的颜色。若想要进行绘制,你需要先获得场景的背景图片然后在那之上进行绘制。

参数:
x - 坐标格的x坐标。
y - 坐标格的y坐标。
抛出:
java.lang.IndexOutOfBoundsException - 若指定的坐标不在场景的边界范围内。若指定的坐标处没有颜色(译者注:如全透明),将会返回Color.WHITE(白色)。
参见:
getBackground()

getWidth

public int getWidth()
返回场景宽度(以坐标格为单位)。


getHeight

public int getHeight()
返回场景高度(以坐标格为单位)。


getCellSize

public int getCellSize()
返回坐标格尺寸(以像素为单位)。


setPaintOrder

public void setPaintOrder(java.lang.Class... classes)
设置场景中各对象的绘制顺序(译者注:在2D场景中,类似于叠放次序)。绘制顺序可以通过类来指定:某个类的对象总是会绘制到场景中其他对象的上方。同类对象的绘制顺序无法被指定。

参数列表中靠前的类型的对象会绘制在靠后的类的对象的上方。

若一个对象的类没有被明确地指定绘制顺序,那它将试图从参数列表中寻找最近的超类,然后继承超类的绘制顺序。

没有在参数列表中出现的类的对象会绘制在那些被列入参数列表的类的对象的下方。

参数:
classes - 排列为欲指定顺序的各类。

setActOrder

public void setActOrder(java.lang.Class... classes)
设置场景中各对象的act顺序。act顺序可以通过类来指定:某个类的对象总是比场景中其他对象先执行act方法。同类对象的act顺序无法被指定。

参数列表中靠前的类型的对象会比靠后的类的对象先执行act方法。

若一个对象的类没有被明确地指定act顺序,那它将试图从参数列表中寻找最近的超类,然后继承超类的act顺序。

没有在参数列表中出现的类的对象会在所有被列入参数列表的类的对象之后执行act方法。

参数:
classes - 排列为欲指定顺序的各类。

addObject

public void addObject(Actor object,
                      int x,
                      int y)
向场景中添加一个actor对象。

参数:
object - 添加的新对象
x - 添加对象处的x坐标
y - 添加对象处的y坐标

removeObject

public void removeObject(Actor object)
从场景中移除指定的一个对象。

参数:
object - 移除的对象

removeObjects

public void removeObjects(java.util.Collection objects)
从场景中移除指定的一系列对象。

参数:
objects - 移除的系列对象

getObjects

public java.util.List getObjects(java.lang.Class cls)
获得场景中的所有对象,或指定类型的所有对象。

若一个指定的类被作为参数传入,则只有该类(及其子类)的对象会被返回。

参数:
cls - 搜索对象的类型(若传入“null”则会搜索所有对象)。
返回:
一个满足条件对象的列表。

numberOfObjects

public int numberOfObjects()
获得场景中actor对象当前的数目。

返回:
actor对象的数目

repaint

public void repaint()
重绘整个场景。


act

public void act()
World对象的act方法。这个act方法同样会被Greenfoot运行环境在每个act循环中调用。World对象自己的act方法在此world中的所有对象的act方法之前执行。

默认的act方法什么也不会做。该方法应当在各个World类的子类中重写,从而定义各子类对象的动作行为。


started

public void started()
此方法会在程序开始(或恢复)运行时被Greenfoot系统调用。可以在子类中重写此方法,从而使游戏在开始(或恢复)运行时执行能特定的逻辑。

此方法默认留空。


stopped

public void stopped()
此方法会在程序暂停运行时被Greenfoot系统调用。可以在子类中重写此方法,从而使游戏在暂停运行时能执行特定的逻辑。

此方法默认留空。


getObjectsAt

public java.util.List getObjectsAt(int x,
                                   int y,
                                   java.lang.Class cls)
返回位于指定坐标格的所有对象。

若一个对象的图形边界覆盖了某坐标格的中心,则认为该对象位于该坐标格内。

参数:
x - 待检测坐标格的x坐标
y - 待检测坐标格的y坐标
cls - 搜索的对象类型(若传入“null”则会搜索所有类型的对象)


Greenfoot homepage