позиционирование объектов относительно MovieClip с измененными scaleX и scaleY - PullRequest
1 голос
/ 23 сентября 2010

Нужна помощь с небольшой проблемой.Я не слишком разбираюсь в математике в AS3.У меня есть один спрайт, который действует как контейнер для двух других спрайтов.У одного есть изображение, у другого - серия горячих точек.

Если я изменяю scaleX и scaleY изображения, горячие точки больше не выстраиваются в линию.Знаете ли вы правильное уравнение, чтобы любой установленный мной масштаб всегда приводил к появлению горячих точек в нужном месте?

Я пробую что-то вроде этого:Сортируй.

1 Ответ

0 голосов
/ 23 сентября 2010

Вы можете масштабировать контейнер вместо изображения ... Предполагая, что горячие точки относятся к изображению, было бы целесообразно иметь их в одном контейнере.Если ваш текущий контейнер содержит какие-либо другие элементы, вы должны создать новый только для рис и пятен.

Редактировать:

pseudo code
hotspot1.x = pic.width * hx1;
hotspot1.y = pic.height * hy1;

Вам понадобитсяфункция, которая вызывается после масштабирования изображения

function onImageScaleComplete(event:Event):void
{
    updatePositions();
}

Но прежде чем вам придется создавать масштабные коэффициенты, когда изображение еще не масштабировано.

  //an array to contain the new scale factors 
  var factors:Array = [];

  //an array containing the hotspots
  var hotspots:Array = [hotspot1 , hotspot2 /*etc... */];

  function setPoints():void
  {
    for( var i:int ; i < hotspots.length ; ++i )
         factors[i] = { xfactor: hotspots[i].x/pic.width , 
                        yfactor: hotspots[i].y/pic.height };    

  }

Затем вы можете обновитьвот так, предполагая новую ширину и высоту картинки

  function updatePositions():void
  {
     for( var i:int ; i< hotspots.length ; ++i )
     {
       hotspots[i].x = factors[i].xfactor * pic.width;
       hotspots[i].y = factors[i].yfactor * pic.height;   
     }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...