Отображение огромных прокручиваемых изображений в изображении? - PullRequest
3 голосов
/ 31 июля 2009

Я пытаюсь показать файлы изображений (jpg, png, gif), которые могут быть больше, чем доступная область отображения. Я встроил изображение в cCanvas (для прокрутки), но большие изображения отображаются не полностью.

Очень большие изображения (например, 2480 x 3507) имеют верхнюю или верхнюю и нижнюю часть изображения, обрезанные с помощью прокручиваемого изображения.

Какой самый большой графический объект можно отобразить с помощью mx.controls.Image?

Спасибо

Ответы [ 3 ]

5 голосов
/ 31 июля 2009

Ограничение в 2880 пикселей для BitmapDatas, для объектов DisplayObject есть ограничение в 8191 пикселей. Вы можете обойти эти ограничения, используя класс BitmapDataUnlimited, доступный здесь: http://code.google.com/p/bitmapdataunlimited/

Однако, если производительность важна, я бы рекомендовал вместо таких больших изображений состоять из нескольких меньших. Даже если вы не используете эти меньшие по размеру или позаботитесь об их удалении из displayList или установке их свойства visible в значение false, производительность все равно будет повышена, поскольку flash автоматически обнаруживает, что они находятся за пределами сцены, и вам не придется быть оказанным.

Edit:

Я забыл сказать, что ограничение в 2880px применяется только при ручном создании BitmapDatas, изображения, размер которых может быть еще больше загружен, и к ним можно получить доступ и манипулировать их BitmapDatas (которые больше, чем 2880px). Вы можете легко получить Bitmap с размером bitmapData, равным размеру окна просмотра, затем вы можете установить его bitmapData, выполнив что-то вроде:

viewportBitmapData.copyPixels(sourceBitmapData, new Rectangle(x,y,viewportWidth, viewPortHeight), new Point(0,0))

При прокрутке вы можете просто сделать вышеупомянутое на каждом кадре Или, если важна производительность, вы можете при прокрутке (если scrollingDistance меньше, чем viewportSize) использовать viewportBitmapData.scroll (x, y), чтобы сместить весь bitmapData, а затем скопировать только новые пиксели.

4 голосов
/ 31 июля 2009

Я читал, что во Flash 9 ограничение составляет 2880 пикселей на измерение. Во Flash 10 ограничение выше. Проверьте, для какой версии вы компилируете.

Вы могли бы потенциально нарезать изображение на более мелкие кусочки и собрать их во Flex.

0 голосов
/ 15 сентября 2011

Если имеет значение, на какой FlashPlayer вы нацеливаетесь:

версии VS максимальный битмап

flashplayer -9: 2880x2880 px
FlashPlayer 10: 4096x4096 px
FlashPlayer 11: неограниченно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...