對於初學者,我只是說我對動作腳本非常陌生,並且我沒有使用Adobe Creative Suite,我將flex作爲記事本用作編譯器。我有兩個類,一個主類和一個名爲OBJECT_square的類。如何更新actionscript中的孩子?
這裏是主類:
package
{
import flash.display.*; import mx.core.*;
import flash.events.*; import mx.collections.*;
import flash.geom.*; import mx.controls.*;
import flash.text.*; import mx.events.*;
import mx.styles.*;
import mx.containers.*;
public class MAIN extends Sprite
{
public var APPLICATION:Application = Application(Application.application);
public var keyDownText:TextField = new TextField();
public function MAIN()
{
stage.addEventListener(KeyboardEvent.KEY_DOWN,KEY_DOWN);
addEventListener(Event.ENTER_FRAME,STEP);
this.addChild(new OBJECT_square().CREATE(10,100,1));
this.addChild(new OBJECT_square().CREATE(10,200,1));
}
public function STEP():void {}
public function DRAW():void {}
public function KEY_DOWN(event:KeyboardEvent):void
{
keyDownText.text = "Key code: " + event.keyCode;
this.addChild(keyDownText);
}
}
}
這裏是OBJECT_square類:
package
{
import flash.display.*;
import flash.events.*;
public class OBJECT_square extends Sprite
{
public var X:int = 0;
public var Y:int = 0;
public var DEPTH:int = 0;
public var SPRITE:Sprite = new Sprite();
public function CREATE(X:int,Y:int,DEPTH:int):Sprite
{
addEventListener(KeyboardEvent.KEY_DOWN,KEY_DOWN);
this.DEPTH = DEPTH;
this.X = X;
this.Y = Y;
DRAW();
return SPRITE;
}
public function KEY_DOWN(event:KeyboardEvent):void
{
if (event.keyCode == 39) {X += 1; DRAW();}
}
public function DRAW():void
{
SPRITE.graphics.beginFill(0xFF0000,1);
SPRITE.graphics.drawRect(X - 10,Y - 10,20,20);
SPRITE.graphics.endFill();
}
}
}
現在我的問題是這樣的。簡單地說,我希望當按下右箭頭鍵時,OBJECT_square繪製的正方形向右移動。現在我只能把它繪製一次(儘管我實際上是在兩個不同的位置創建兩個獨立的方塊)。現在我需要知道的是如果我在OBJECT_square中正確使用了鍵盤事件。我在主類中使用了鍵盤事件以顯示我按下的最後一個鍵,但我不確定如何在除主鍵之外的其他類中使用它。另外我不確定如何「更新」正方形,以便在移動時重繪它,即從顯示列表中刪除舊的自己並重新插入新的自己。整個代碼指向的是廣場是'自給自足的',即包含繪製和移動它所需的所有代碼,而不是依賴任何其他類。我基本上想要這樣做,所以一旦另一個班級做出了正方形,這個正方形就可以獨立完成其他任何事情。