гибкий интерфейс: присвоение идентификатора примитивам

#apache-flex #graphics #flex4 #primitive

#apache-гибкий #графика #flex4 #примитив

Вопрос:

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

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

например, я получаю строку, построенную следующим образом

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

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

Ответ №1:

Можно было бы предположить, что это делается внутри какого-то компонента. У всех 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 в следующем кадре.

Ответ №2:

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

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

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