Динамически масштабировать компонент списка и его текстовое содержимое

У меня есть компонент списка в моем приложении для флэш-памяти, который я не хочу динамически масштабировать для разных разрешений, когда вызывается событие.RESIZE.

Масштабировать фактический список достаточно просто. Я могу установить для списка статический размер для минимального ожидаемого разрешения, а затем масштабировать его как отношение текущего разрешения к минимальному разрешению. Что-то типа:

if(stage.stageWidth > MIN_WIDTH_RESOLUTION)
    m_list.width = MIN_LIST_WIDTH * (stage.stageWidth / MIN_WIDTH_RESOLUTION)

и что-то подобное по высоте.

Проблема возникает из-за textField внутри списка. Текст не масштабируется со списком. Есть ли встроенные в ActionScript способы решения этой проблемы?

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

Было бы здорово, если бы это можно было обработать внутри actionscript методом, о котором я не знаю, но если нет, я был бы признателен за некоторые советы или уравнения о том, как справиться с этим вручную.


person Josh Brittain    schedule 09.09.2012    source источник


Ответы (1)


Вы можете использовать свойство преобразования списка, чтобы масштабировать или изменять его размер (также его дочерние элементы). Что вам нужно сделать, так это просто выполнить вычисления масштабирования и назначить его в матрице, а затем назначить эту матрицу преобразованию.

Пример: если mlist — это ваш список и матрица, тогда

mlist.transform.matrix = matrix;

Следующая ссылка поможет вам установить матрицу

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/geom/Matrix.html

Я считаю, что эта часть информации именно то, что вам нужно.

person Moorthy    schedule 10.09.2012