Есть ли какой-либо (простой) способ решить проблему динамической регистрации с мультитачными событиями масштабирования в flex? Я просто не могу обмотать голову вокруг этого.Flex multitouch path scale dynamic registration issue
У меня есть (среди некоторых строк и меток) путь в группе, которая сама завернута в скроллер;
<s:Scroller id="scroller">
<s:Group id="scrollerContent">
<s:Path id="path">
<s:stroke>
<s:SolidColorStroke color="#ffffff" weight="2"/>
</s:stroke>
</s:Path>
</s:Group>
</s:Scroller>
То, что я хотел бы сделать это, чтобы увеличить и на пути (и другие вещи в группе scrollerContent), так что в моем методе creationComplete() Я добавил EventListener к группе scrollerContent:
scrollerContent.addEventListener(TransformGestureEvent.GESTURE_ZOOM, zoomEvent);
Вот код Christophe Coenraets при условии его график, например (что на самом деле масштаб путь, основанный на х = 0, хотя,
private function zoomEvent(e:TransformGestureEvent):void
{
zoom(e.scaleX, e.scaleY);
}
protected function zoom(scaleX:Number):void
{
var w:Number = path.width * scaleX;
if (scaleX>1)
path.width = w > width*5 ? width*5 : w;
else
{
path.width = w < width ? width : w;
if (path.x + path.width < width) path.x = width - path.width;
}
}
Я знаю класса DynamicRegistration, но не может заставить его работать нормально, он по-прежнему масштабирует путь, основанный на точке x = 0.
DynamicRegistration.scale(scrollerContent, new Point(e.localX, e.localY), scrollerContent.scaleX*= e.scaleX, scrollerContent.scaleY=1);
Любая помощь в этом отношении была бы высоко оценена!
Неужели никто никогда этим столкнуться проблема? Или есть более простой способ масштабирования диаграммы в любой точке? Я знаю, что у GestureWorks есть рабочий API для этого, но, если это возможно, я бы хотел избежать покупки лицензии, поскольку я считаю, что эта регистрация не может быть большой проблемой для опытных разработчиков Flex/AS3. – AlBirdie