flex: присвоение идентификатора примитивам - PullRequest
1 голос
/ 21 апреля 2011

Я создал несколько гибких примитивов на экране с помощью скрипта действия. Теперь, основываясь на бизнес-логике, мне нужно внести изменения в некоторые из этих примитивов, такие как: изменение толщины, направление стрелки и т. Д.

Одна мысль состояла в том, чтобы назначить идентификаторы этим примитивам по мере их построения - как мне это сделать?

например. Я строю линию, как показано ниже

var myShape:Shape=new Shape();    
myShape.graphics.lineStyle(thickness,color);    
myShape.graphics.moveTo(XFrom,YFrom);    
myShape.graphics.lineTo(XTo,YTo);

Если на основании какого-либо условия я хочу изменить цвет / толщину, указанные выше, как я могу ссылаться на эту строку выше?

Ответы [ 2 ]

1 голос
/ 27 апреля 2011

Я придумал более простой подход

По сути, вместо того, чтобы рисовать примитивы напрямую, назначается рисование для функции формы, которая будет возвращать объект Shape.

Теперь примитивная строка имеет простой обработчик для изменения свойств. дайте мне знать, если вам нужны более конкретные сведения о том, как этого добиться

1 голос
/ 21 апреля 2011

Было бы представить, что это сделано внутри какого-то компонента. Все UIComponents имеют жизненный цикл , который вы хотите придерживаться. Вы можете переопределить несколько функций, чтобы получить желаемую функциональность. Как это:

private var _shape:Shape;

override protected function createChildren():void
{
   super.createChildren();
   if(!this._shape)
   {
      this._shape = new Shape();
      addChild(this._shape);
   }

}

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
   super.updateDisplayList(unscaledWidth, unscaledHeight);

   this._shape.graphics.lineStyle(thickness,color);    
   this._shape.graphics.moveTo(XFrom,YFrom);    
   this._shape.graphics.lineTo(XTo,YTo);
}

И если вы хотите, чтобы он запускался при изменении данных, вам следует изучить invalidateDisplayList, который вы бы вызвали после любых изменений данных, и он запустил бы функцию updateDisplayList в следующем кадре.

...