2016-01-09 2 views
1

У меня есть ограничения в масштабировании, поэтому вы можете увеличить масштаб от 100% до 150%. Но, я делаю зум, затем поворачиваю в правую верхнюю часть масштабированного MC, а затем, когда я уменьшаю масштаб, MC остается слева, и MC исчезает с экрана. Я больше не вижу MC.Увеличение размера в флеш-жесте

Как я могу уменьшить масштаб MC, не выходя из Stage? Вот мой код для увеличения:

function onZoom(e:TransformGestureEvent):void { 

    var MIN_ZOOM:Number = 1; //minimal zoom percentage 100% 
    var MAX_ZOOM:Number = 1.5; //maximal zoom percentage 150% 

    escenario.scaleX *= e.scaleX; 
    escenario.scaleY *= e.scaleY; 
    escenario.scaleX = Math.max(MIN_ZOOM, escenario.scaleX); 
    escenario.scaleY = Math.max(MIN_ZOOM, escenario.scaleY); 
    escenario.scaleX = Math.min(MAX_ZOOM, escenario.scaleX); 
    escenario.scaleY = Math.min(MAX_ZOOM, escenario.scaleY); 

} 

Это жуткий жест увеличения.

ответ

0

Необходимо также проверить свойства x и y. Если позиция MovieClip не соответствует границам Stage, вам необходимо исправить их.

Если вы работаете с Classes и MAX_ZOOM и MIN_ZOOM являются constants, рекомендуется объявить их, как они есть. Этот код предполагает, что у вас есть MovieClip в root, вы хотите сохранить его внутри границ Stage, а MovieClip со шкалой 1 имеют тот же размер, что и Stage, измените код в зависимости от вашего макета.

private const MIN_ZOOM:Number = 1; 
private const MAX_ZOOM:Number = 1.5; 

private function onZoom(e:TransformGestureEvent):void { 

    var scale:Number = Math.min(e.scaleX, e.scaleY); 

    escenario.scaleX *= scale; 

    // Check if the scale is between the min and max parameters 
    if(escenario.scaleX > MAX_ZOOM) escenario.scaleX = MAX_ZOOM; 
    if(escenario.scaleX < MIN_ZOOM) escenario.scaleX = MIN_ZOOM; 

    escenario.scaleY = escenario.scaleX; 

    // Check is the MovieClip is inside the Stage bounds 
    if(escenario.x > 0) escenario.x = 0; 
    if(escenario.y > 0) escenario.y = 0; 
    if(escenario.x + escenario.width < escenario.stage.stageWidth) escenario.x = escenario.stage.stageWidth - escenario.width; 
    if(escenario.y + escenario.height < escenario.stage.stageHeight) escenario.y = escenario.stage.stageHeight - escenario.height; 

} 
Смежные вопросы