#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.
Теперь у примитивной строки есть простой обработчик для изменения свойств. дайте мне знать, если вам нужны более конкретные сведения о том, как этого добиться