2013-11-25 2 views
0

У меня вопрос о масштабировании объектов. У меня есть функция, которая вычисляет целевой масштаб группы объектов. Масштаб зависит от количества объектов. В то же время я хочу, чтобы объекты имели максимальный масштаб. Я хочу, чтобы объекты имели ширину не более 55 пикселей. Поэтому я разделяю 55 по ширине объекта, чтобы получить максимальный масштаб. Поэтому я придумал следующую функцию:Как масштабировать объекты до определенного размера?

private function setScale():Number 
{ 
//The 6 is just a random number I chose. 
    scale = 6/amountObjects; 
    if (scale >= 55/averageObjectWidth) 
    { 
     scale = 55/averageObjectWidth; 
    } 
    return scale; 
} 

У меня есть проблема в том, что, когда я выполняю эту функцию несколько раз, я в конечном итоге получить неверный масштаб. Я проиллюстрирую это в следующем примере:

У меня есть десять объектов, поэтому масштаб будет 0,6. Средняя ширина объекта составляет 138, поэтому максимальная шкала составляет около 0,4. Итак, я бы масштабировал объекты с помощью этого масштабного коэффициента. Новая ширина будет тогда 55. Затем, когда количество объектов меняется, я снова запускаю эту функцию. Теперь существует 9 объектов, новая шкала, основанная на количестве объектов, становится около 0,7. Вот сейчас рассол, так как новая ширина объекта составляет 55, когда я делаю scale = 55/averageObjectWidth ... Я получаю 1! Это означает, что он пропустит оператор if и вернет мне шкалу 0,7.

Все, что я хочу сделать, это вернуть этот класс мне шкалу, основанную на количестве объектов, что все еще находится под шириной 55

Я надеюсь, что я достаточно ясно, и спасибо за ваше время.

+0

55 пикселей на объект или для всех объединенных объектов? –

+0

О, извините, это 55 пикселей на объект. – Banzboy

ответ

0

Буду ли я прав, предполагая, что эти объекты являются спрайтами?
В этом случае, когда вы устанавливаете масштаб/ширину/высоту спрайта, вы устанавливаете его масштаб. Таким образом, чтобы получить «истинную»/немасштабированную ширину, вы можете использовать sprite.width/sprite.scaleX (или установить масштаб на 1, но вам придется снова установить его, что может вызвать странные графические сбои)

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