在Greenfoot【java学习】-创建新世界这一节中我们知道如何在世界里添加一个角色,除了使用系统自带的角色图片之外,仍然可以使用我们自己图片,方法跟添加世界背景一样,只需要把图片文件放置到项目的“images”文件夹里,然后在左侧的对话框里就能看到我们添加的图片了,这样直接选择即可。每个游戏角色类都有一张相关的图片作为其所有对象的默认图像,而且每个角色对象都可以根据需要改变图像。

Greenfoot 的基本功能和使用方法之变换角色图像

那么如何在初始化角色对象的时候变换图片?

在java 项目中,游戏角色对象的初始化通常都是通过构造方法完成的。然而,有些初始化任务却不能在这里完成,因为在在执行角色对象的构造方法时对象并没有存在于游戏世界中,因此像 getWorld()、getX()和 getY()这样的方法就不能在构造方法中调用。

由此可见,如果想实现一些方式(比如在世界中创建其它对象,或者根据附近的其它对象变换图片)作为初始化方法的组成部分,就需要获取游戏世界的入口,但是这个入口是不能在构造方法中获取的。于是需要利用另一个初始化方法,addedToWorld()方法,每个游戏角色类都从父类继承了这个方法。

Greenfoot框架会在本actor被添加到对应的world后,立即调用此方法。 本方法可以被重写,用于定制本actor被添加到对应world之后即刻采取的动作行为。默认情况下,该方法什么也不做。因此只需要在游戏角色类中定义一个 addedToWorld()方法,然后在其中编写与任务相关的代码即可,例如:

Greenfoot 的基本功能和使用方法之变换角色图像

这个例子表示的是:将一只恐龙角色放进游戏世界,当它处于安全的的时候看起来很正常,但是当它不安全的时候就变得很惊恐。为了实现这种效果,使用了两张图片(“dinosaur1-e.png”和“dinosaur1-b.png”)来分别显示恐龙不同情况下的图像。

再添加上述代码后,我们往世界里添加一个角色试试,看看是什么样的。

Greenfoot 的基本功能和使用方法之变换角色图像

在isSafe()方法里我们只返回了一个Boolean值(true:真,表示安全;false:假,不安全),你可以修改这个值,看看恐龙的变化。