Поскольку начальник хотел, чтобы это было готово к завтрашнему дню, мне пришлось отказаться от идеи, что Flex выполняет эту работу за меня, и рассчитать значения самостоятельно.
Обратите внимание, что я знал, что все мои JPG были шириной 120px, но высота могла варьироваться. Это облегчает горизонтальное позиционирование, поэтому его вертикальное позиционирование будет упоминаться ниже ...
ЧАСТЬ ПЕРВАЯ
Каждый раз, когда событие complete
срабатывает на объект изображения (т.е. в него загружается JPG), я устанавливал его положение на основе его высоты. Предполагая, что осевая линия была линией 300 пикселей вниз от верхней части экрана, я использовал:
oImage.y = 300 - (oImage.contentHeight / 2)
Я избежал события updateComplete
, так как казалось, что оно срабатывало сотни раз, когда эффект перемещал / изменял размер изображения. Я также избежал свойства height
(в пользу contentHeight
), так как обнаружил странную проблему с тегом изображения, из-за которой мне пришлось установить его высоту равным значению (я действительно хотел установить ширину) для того, чтобы изменить размер, чтобы сделать что-нибудь. Я использовал height="999"
и позволил изображению позаботиться о своем собственном соотношении сторон.
ЧАСТЬ ВТОРАЯ
Непосредственно перед тем, как я вызвал метод play()
для своих эффектов, я должен был установить значение yTo
для каждого эффекта перемещения, чтобы гарантировать, что изображение будет перемещаться в правильное вертикальное положение, чтобы учесть его изменение в размере в то же время (например, если изображение сжимается, его нужно слегка сдвинуть вниз).
Для каждого изображения мне нужно было определить соотношение сторон, а затем я мог рассчитать, какой будет новая высота изображения после изменения размера.
private function calculate_yto_value(oImage:Image, iWidthAfterTheEffect:int):int {
var iAspectRatio:Number = oImage.contentHeight / oImage.width
var iHeightAfterTheEffect:Number = iAspectRatio * iWidthAfterTheEffect
return 300 - (iHeightAfterTheEffect / 2)
}
fxMovePhoto.yTo = calculate_yto_value(imgPhotoA, 60)