在PureMVC中,放置控制视图的键盘侦听器的正确位置在哪里?

时间:2011-01-26 19:03:46

标签: flash actionscript-3 actionscript puremvc

我正在获得一些PureMVC体验,我想使用键盘命令来控制我的视图。应用程序的其余部分不需要知道此视图正在做什么。

我应该将它们直接放在视图中,还是应该放在其他地方,并在按下某个键时使用通知通知视图?

谢谢!

1 个答案:

答案 0 :(得分:2)

正如你所说,你有两个选择 - 在view.mxml类中放置一些监听器,或者将监听器放在一些通用类中。

1-st - 这似乎是正常的方法,不需要进一步的解释,每个程序员都会这样做。

第二种方法更有趣。如果您有很多视图,听取键盘事件,您将开始使用类似

的内容
public class EnterButtonPressed extends SimpleCommand 
{
  function execute(...):void
  {
    //do something with the model, and then notify the view
  }
}

但是在添加了更多应该监听Enter密钥的视图后,您的课程最终会像那样

public class EnterButtonPressed extends SimpleCommand {
  function execute(...):void
  {
    switch(viewType)
    {
      case view1:
        //do something with the model, and then notify view1
        break;
      case view2:
        //do something with the model, and then notify view2
        break;
      case view3:
        //do something with the model, and then notify view3
        break;
      case view4:
        //do something with the model, and then notify view4
        break;
      ...
  }
}

如果您收听许多键盘事件,这似乎很糟糕。但如果您熟悉设计模式,则可以使用State Pattern

在我的最新项目中,当我遇到许多不同的视图状态来监听许多事件时,它帮助了我很多。

我还建议你看一下Mate框架,就像PureMVC +数据绑定+ Flex事件一样。