ActionScript - 使用TweenLite和&amp ;;的严重性能问题鼠标移动事件

在拖动时使用TweenLite补间过滤器时,我收到了非常明显的性能损失。
private function mouseMoveEventHandler(evt:MouseEvent):void
    {
    evt.stopImmediatePropagation();

    startDrag();

    zoomTween = new TweenLite(this, 1.0, {dropShadowAmount: ZOOM_SHADOW, scaleX: 1.5, scaleY: 1.5, rotation: 10, onUpdate: updateDropShadow, onComplete: completeDropShadow, onCompleteParams: [ZOOM_SHADOW]});

    removeEventListener(MouseEvent.CLICK, mouseClickEventHandler);
    addEventListener(MouseEvent.MOUSE_UP, mouseUpEventHandler);
    addEventListener(MouseEvent.MOUSE_OUT, mouseUpEventHandler);
    }

private function updateDropShadow():void
    {
    filters = [new DropShadowFilter(dropShadowAmount, 90, 0x000000, 1.0, dropShadowAmount * 2, dropShadowAmount * 2, 1.0, 3)];
    }

private function completeDropShadow(dropShadowAmount:Number):void
    {
    this.dropShadowAmount = dropShadowAmount;
    }
我知道有一个Drop Shadow Plusing与TweenLite,但它只能打开和关闭过滤器,而不是改变一个始终可见的投影的距离或模糊量。 另外,我不是在手机上测试这个,我在Flash CS5和外部调试器的快速桌面上测试 - 两者都落后于显示对象,这只是一个简单的方形,即使在zoomTween之后也是如此完成。 有任何想法吗?     
已邀请:
您将在每次mousemove更新时实例化一个新的TweenLite。您可能会在单个enter_frame间隔的空间内发生数十个。这可能是很多TweenLite实例,都试图同时移动同一个对象一秒钟。想想数以百计的“短”鼠标运动。数以千计的延长动作。 特别是对于移动设备,您需要避免鼠标移动事件,因为它们绝对会泛滥系统。这是数据过载。也许您可以在enter_frame或计时器事件处理程序中跟踪delta随时间的变化?这样做,然后确保一次只存在一个tweenlite(杀死旧的,或者在分配新的之前让旧的完成)。 另请注意,移动设备上的过滤器非常难。您可以在桌面上启动并运行它,但如果在移动设备上运行,我会感到惊讶。     

要回复问题请先登录注册