|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectgreenfoot.Actor
public abstract class Actor
在Greenfoot世界中,每一个物体(对象 Object)都称为一个 Actor。每个Actor都拥有一个相对于世界的坐标,和一个用于显示的外观(也就是:一个图标)。
Actor 本身通常不会被实例化,而是作为其他各种各样Actor子类的共同超类(父类 Superclass)而存在。任何想要存在和显示于Greenfoot世界中的对象,都必须继承自Actor类。然后各个子类,便可以重新定义它们自己的外观和行为。
这个类最为核心的“灵魂”便是 act 方法。这个方法会在Greenfoot界面中的“Act”按钮被按下,或者“Run”按钮被激活的情况下,被Greenfoot框架自动调用。Actor类本身的act方法是留空的,各个子类通常会重写此方法来定义自己的行动方式。
翻译有误请联系:hzxjhspxn@163.com
Constructor Summary | |
---|---|
Actor()
创建一个Actor。 |
Method Summary | |
---|---|
void |
act()
每个actor的act方法都会被Greenfoot框架在每一个动作步(逻辑帧)中按指定的顺序依次调用,从而使得actor对象能够执行act方法所描述的动作行为。 |
protected void |
addedToWorld(World world)
Greenfoot框架会在本actor被添加到对应的world后,立即调用此方法。 |
GreenfootImage |
getImage()
返回用于显示本actor外观的图片。 |
protected java.util.List |
getIntersectingObjects(java.lang.Class cls)
返回所有与本对象相交的指定类型的其他对象。 |
protected java.util.List |
getNeighbours(int distance,
boolean diagonal,
java.lang.Class cls)
返回本对象周围指定距离内指定类型的其他对象。 |
protected java.util.List |
getObjectsAtOffset(int dx,
int dy,
java.lang.Class cls)
返回所有与所给坐标格中心相交的指定类型的对象(坐标相对于本对象而言)。 |
protected java.util.List |
getObjectsInRange(int radius,
java.lang.Class cls)
返回本对象周围指定半径内指定类型的其他对象。 |
protected Actor |
getOneIntersectingObject(java.lang.Class cls)
返回一个与本对象相交的指定类型的其他对象。 |
protected Actor |
getOneObjectAtOffset(int dx,
int dy,
java.lang.Class cls)
返回一个坐落于指定坐标的actor对象(坐标相对于本对象而言)。 |
int |
getRotation()
返回本对象当前的角度 |
World |
getWorld()
返回本对象所处的世界。 |
int |
getX()
返回本对象的x坐标。 |
int |
getY()
返回本对象的y坐标。 |
protected boolean |
intersects(Actor other)
检测本对象与所给对象是否相交。 |
protected boolean |
isTouching(java.lang.Class cls)
检测本对象是否与任何所给类型的其他对象相接触。 |
void |
move(int distance)
沿着目前的朝向将本对象移动指定的距离。 |
protected void |
removeTouching(java.lang.Class cls)
移除一个与本对象接触的所给类型的对象(如果存在的话)。 |
void |
setImage(GreenfootImage image)
设定指定的图片作为本actor的外观。 |
void |
setImage(java.lang.String filename)
设置指定的图片文件作为本actor的外观。 |
void |
setLocation(int x,
int y)
为本对象设定一个新的坐标。 |
void |
setRotation(int rotation)
设定本对象的角度(朝向)。 |
void |
turn(int amount)
将本对象旋转指定的角度 (以°为单位)。 |
void |
turnTowards(int x,
int y)
令本对象面朝指定的坐标格。 |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public Actor()
Method Detail |
---|
public void act()
默认的act方法什么也不会做。该方法应当在各个Actor类的子类中重写,从而定义各子类对象的动作行为。
(译者注:“指定的顺序”原文为“in unspecified order”。事实上各类actor的act顺序可在world中通过setActOrder方法规定,同类actor的act顺序由加入world的先后顺序决定。故此处翻译为“按指定的顺序”。)
(译者注:act方法是各Actor子类的核心方法。在每一个act循环(或称“主循环”“逻辑帧”“动作步”)中,Greenfoot会率先调用world的act方法,然后按照world类中setActOrder方法所规定的顺序依次调用当前world中每一个actor的act方法。在每一个act循环中,world的act方法、每个actor的act方法均被调用一次。)
public int getX() throws java.lang.IllegalStateException
(译者注:Greenfoot世界的坐标系统时基于“cell”即“坐标格”的。一个坐标格的尺寸可以不是1*1像素的。例如当坐标格的尺寸为3*3时,位于像素坐标(1,4)的actor的坐标被认为是(0,1)。你可以在你的world类的super(int, int, int)或super(int, int, int, boolean)行中调整第三个参数来指定坐标格的像素尺寸。)
java.lang.IllegalStateException
- 倘若本actor尚未被添加到一个world中。public int getY()
(译者注:Greenfoot世界的坐标系统时基于“cell”即“坐标格”的。一个坐标格的尺寸可以不是1*1像素的。例如当坐标格的尺寸为3*3时,位于像素坐标(1,4)的actor的坐标被认为是(0,1)。你可以在你的world类的super(int, int, int)或super(int, int, int, boolean)行中调整第三个参数来指定坐标格的像素尺寸。)
java.lang.IllegalStateException
- 倘若本actor尚未被添加到一个world中。public int getRotation()
setRotation(int)
public void setRotation(int rotation)
rotation
- 旋转角的度数turn(int)
public void turnTowards(int x, int y)
x
- 要面向的坐标格的x坐标y
- 要面向的坐标格的y坐标public void setLocation(int x, int y)
若此方法在子类中被重写,请务必以"super.setLocation(x,y)"调用父类方法,以免引起无限递归。
x
- 指定位置的x轴坐标y
- 指定位置的y轴坐标move(int)
public void move(int distance)
朝向即旋转角,可由setRotation(int)
方法设定。
distance
- 移动的距离(以坐标格为单位);负的距离值将引起反方向的移动。setLocation(int, int)
public void turn(int amount)
amount
- 旋转的角度; 正的旋转角值将引起顺时针向的转动。setRotation(int)
public World getWorld()
protected void addedToWorld(World world)
该方法默认什么也不做。
(译者注:在本方法被调用前,调用getX()或getY()方法是不允许的,否则会抛出异常;可以setLocation(),但不会生效;可以正确地使用getImage和setImage方法。在对应的world调用addObject方法之后,Greenfoot首先会调用setLocation方法设定addObject方法中指定的位置,然后立即调用本方法。)
world
- 本对象被添加进入的世界public GreenfootImage getImage()
public void setImage(java.lang.String filename) throws java.lang.IllegalArgumentException
(译者注:仅支持静态gif图片,无法显示动画效果。)
(译者注:图片文件应统一放在“工程目录/images/”路径下。)
filename
- 图片文件的文件名(译者注:应包含后缀,后缀区分大小写。可以是基于images目录的相对路径。)
java.lang.IllegalArgumentException
- 倘若无法加载指定的图片。(译者注:如该文件不存在或错误的文件名。)public void setImage(GreenfootImage image)
image
- 外观图片setImage(String)
protected boolean intersects(Actor other)
protected java.util.List getNeighbours(int distance, boolean diagonal, java.lang.Class cls)
所有可以在“distance”参数所规定的“步”数内可达的坐标格都会被纳入考虑的范围。'diagonal'参数决定了,每一“步”是只能迈向主要的四个方向,还是包含对角线方向在内的八个方向。因故,若distance/diagonal参数的取值为(1,false),该方法会计算四个格子;若取值为(1,false)则会计算八个格子。
distance
- 搜索临近对象的步数距离(以坐标格为单位)。diagonal
- 若为true,则包含对角线方向cls
- 搜索的对象类型(若传入“null”则会搜索所有类型的对象)
protected java.util.List getObjectsAtOffset(int dx, int dy, java.lang.Class cls)
dx
- x坐标,相对于本对象而言dy
- y坐标,相对于本对象而言cls
- 搜索的对象类型(若传入“null”则会搜索所有类型的对象)
protected Actor getOneObjectAtOffset(int dx, int dy, java.lang.Class cls)
dx
- x坐标,相对于本对象而言dy
- y坐标,相对于本对象而言cls
- 搜索的对象类型(若传入“null”则会搜索所有类型的对象)
protected java.util.List getObjectsInRange(int radius, java.lang.Class cls)
radius
- 搜索范围的半径(以坐标格为单位)cls
- 搜索的对象类型(若传入“null”则会搜索所有类型的对象)protected java.util.List getIntersectingObjects(java.lang.Class cls)
cls
- 搜索的对象类型(若传入“null”则会搜索所有类型的对象)protected Actor getOneIntersectingObject(java.lang.Class cls)
cls
- 搜索的对象类型(若传入“null”则会搜索所有类型的对象)protected boolean isTouching(java.lang.Class cls)
cls
- 搜索的对象类型(若传入“null”则会搜索所有类型的对象)protected void removeTouching(java.lang.Class cls)
cls
- 搜索的对象类型(若传入“null”则会搜索所有类型的对象)
|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |