Для начала позвольте мне сказать, что я новичок в сценарии действий, а также что я не использую Adobe Creative Suite, я использую блокнот с Flex в качестве компилятора. У меня есть два класса, основной класс и класс с именем OBJECT_square.
Вот ГЛАВНЫЙ класс:
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. Я также использовал событие клавиатуры в основном классе, чтобы отобразить последнюю нажатую клавишу, но я не уверен, как использовать ее в другом классе, кроме основного. Также я не уверен, как «обновить» квадрат так, чтобы он перерисовывался при перемещении, то есть удалял его старое «я» из списка отображения и заново вставлял его новое «я». Весь смысл кода заключается в том, что квадрат должен быть «самодостаточным», то есть содержать весь код, необходимый для его рисования и перемещения, а не полагаться на какой-либо другой класс. Я в основном хочу, чтобы, когда другой класс сделал квадрат, квадрат мог делать все остальное самостоятельно.