Есть ли простой способ получить группу состояний или фактический объект State для текущего состояния? - PullRequest
2 голосов
/ 30 марта 2012

Я использую Flex 4.5 и пытаюсь воспользоваться новой функцией групп состояний.У меня есть два State s (назовите их readType1 и readType2), которые оба принадлежат одному и тому же stateGroup (назовите его readOnly).Есть несколько мест, где я хотел бы сделать что-то на основе текущего состояния, и это было бы то же самое для двух состояний чтения.Например:

if (this.currentState == "readType1" || this.currentState == "readType2")
{
  //do stuff
}

Мне интересно, есть ли способ изменить это так, чтобы он основывался на stateGroup (потому что логически это действительно то, на чем он основан, а не на реальных точных состояниях)в легкий путь.Я хотел бы сделать что-то вроде:

if (this.currentStateGroup == "readOnly")
{
  //do stuff
}

или не получилось

if (this.currentStateObject.stateGroups.indexOf("readOnly") >= 0)
{
  //do stuff
}

Я не смог найти способ получить имя текущего stateGroup,и не получить фактический объект State для текущего состояния (currentState - это просто строка) без циклического перебора this.states.Я надеюсь, что что-то упустил, и есть способ легко это сделать ...

Я думал, что это то, с чем должны были помогать группы состояний: группировать общее поведение.Или я неправильно понимаю суть государственных групп?На них не так много примеров или много информации, и примеры, которые я нашел, не были достаточно хороши, чтобы действительно понять, как их можно использовать в реальном приложении.

В любом случае, если кто-то знает оспособ сделать то, что я хочу, я буду признателен, или если я думаю, что все это неправильно, пожалуйста, дайте мне знать.Спасибо.

1 Ответ

1 голос
/ 02 апреля 2012

Возможно, вы можете включить эту проблему на ухо:

Выполняйте свою работу при входе в соответствующие состояния. В MXML используйте приемник «enterState» для каждого состояния, которое принадлежит группе stateGroup:

<s:states>
  <s:State name="readType1" enterState="onEnterReadState()" stateGroups="readGroup"/>
</s:states>
...