這是一個基本的問題。但是,我不明白如何解決它。我有一個應用程序有幾個enteties。例如。派克< - 魚 - >鯊魚。魚類是基礎類。as3:如何組織班級
我正在做某種湖,所以我所有的魚類都只能在一些寄宿生中移動。更重要的是,它們都是隨機創建在湖的一個邊緣上,並根據它們所處的邊緣游到另一個邊緣。下面是它如何尋找基類:
public class Fish extends FlxSprite
{
[Embed(source="./resources/Elipse.png")]
public var image:Class;
// Variable which stores the direction of item movement (false - Move right)
// (true - Move Left)
private var movement:Boolean;
public function Fish(x:int, y:int)
{
super(x, y, image);
// Move right
if (x < 5)
{
movement = false;
}
else
{
movement = true;
}
}
public override function update():void
{
if(movement)
{
this.velocity.x -= 3;
}
else
{
this.velocity.x += 3;
}
super.update();
}
現在我想擴展這個模型,以添加一些額外的行爲魚類。例如。我想做一個鯊魚。要做到這一點,我需要:
1)更換抽象魚的形象用鯊魚
2的圖像)更改位(鯊魚仍然需要知道方向,但可能使用其他方法來速度的行爲)
3)定義根據尺寸大小屬性(如鯊魚會更強或更弱)
的問題是:
如何定義鯊魚......魚的子類?或者從Sprite子類化它更好?我認爲從魚子類化將是更自然的方式,但在這種情況下,我不知道如何重寫魚的視覺呈現(如圖像),因爲它是不可能重寫一個變量。另一方面,如果我將FlxSprite用作基類,重新定義表示會很容易,但是在這種情況下,我將無法重用移動代碼(例如,所以魚知道在哪個方向上游泳)...
我知道這個問題有點難以理解。如有任何問題,很樂意重新定義它。
科迪亞克是正確的。我想補充一點,其基本思想是,在Olegs的例子中,圖像字段代表了一個非常具體的屬性(魚的視覺表示)。它在這個班上錯位。如果你想到這一點,魚的抽象概念就不能有一個具體的表示,因爲如果你不知道魚是什麼樣子的話,它可能看起來像什麼樣的具體魚。唯一可以說的是,一條魚總體上具有視覺表現。在任何具體的子類中,就像科迪亞克建議的那樣,你可以指定具體的表示。 – ghost23 2012-03-13 11:49:07
好點!我將把這個演示文稿移出抽象類 – 2012-03-13 12:29:21
小問題在這裏。如果我需要添加5個不同大小的相同鯊魚(例如,他們每個人都有不同大小的圖像),我會怎麼做?在這種情況下創建5個子類有點奇怪嗎? – 2012-03-13 14:57:59