【问题标题】:Actionscript eventdispatcher in Paint Program绘制程序中的 Actionscript 事件调度程序
【发布时间】:2010-03-24 17:14:48
【问题描述】:

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

【问题讨论】:

    标签: flash actionscript-3


    【解决方案1】:

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

    要使用 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-04
      • 2011-10-13
      • 2019-01-20
      • 2017-05-07
      • 2011-12-05
      • 1970-01-01
      • 2021-02-24
      • 1970-01-01
      相关资源
      最近更新 更多