Flash 绘画程序中的Actionscript事件调度器

Flash 绘画程序中的Actionscript事件调度器,flash,actionscript-3,Flash,Actionscript 3,我正在用纯ActionScript 3.0在Flash中编写一个类似MS Paint的简单程序 一个工具栏,允许您选择要绘制的形状(星形、心形…) 另一个用于颜色选项的工具栏,其中每个按钮都是一种颜色(红色、绿色)。总共有10种颜色 然后是画布,单击时将在画布上绘制形状 我有以下课程 class Main extends sprite class ColorButton extends sprite class ShapeButton extends sprite class Star()

我正在用纯ActionScript 3.0在Flash中编写一个类似MS Paint的简单程序

  • 一个工具栏,允许您选择要绘制的形状(星形、心形…)
  • 另一个用于颜色选项的工具栏,其中每个按钮都是一种颜色(红色、绿色)。总共有10种颜色
  • 然后是画布,单击时将在画布上绘制形状
我有以下课程

class Main extends sprite
class ColorButton extends sprite
class ShapeButton extends sprite

class Star() extends sprite // star object to be added to Main (canvas)
class Heart() extends sprite // heart object to be added to Main (canvas)

由于我是AS的新手,我不确定如何/在何处保存状态(用户选择)。点击按钮如何改变点击画布的效果?我想我需要使用EventDispatcher?你们能给我指出正确的方向吗?

你们有两个选择,要么你们可以创建一个可以保存所有信息的静态类,要么它可以保存在canvas类中,这在很大程度上取决于其他功能,但为了简单起见,我会使用canvas

要使用EventDispatcher,您需要创建和侦听事件,例如,您可以使用以下命令侦听鼠标向上移动事件:

ShapeButton.addEventListener(MouseEvent.MOUSE_UP, changeShape);
然后调用
changeShape
函数,在本例中,该函数可能会设置“笔刷”形状的变量。 我个人会使用变量来保存绘制形状的精灵的引用,例如:

private var paintShape:Class;

public function Main(){
    paintShape = Star; // Make a star brush
    addEventListener(MouseEvent.MOUSE_UP, paintObject);
    //...
}

private function paintObject(ev:MouseEvent){
   var newShape = new paintShape() as Sprite;
   newShape.x = mouseX;
   newShape.y = mouseY;
   addChild(newShape);
}