Paint程序中的Actionscript eventdispatcher

时间:2010-03-24 07:24:20

标签: flash actionscript-3

我正在使用纯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?你们能指点我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

你有两个选择,要么你可以制作一个可以容纳所有信息的静态类,要么它可以保存在你的画布类中,它很大程度上取决于其他功能,但为了简单起见,我会使用画布。

使用您需要创建和监听事件的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);
}

see livedocs for an overview of Events