2009-09-17 5 views
0

Моя девушка - графический дизайнер, который в настоящее время работает на веб-сайте. Она не знает ни HTML или CSS, ни знакома с Flash, поэтому она строит весь сайт во Flash. Следует отметить, что я разработчик и имею около 0 опыта работы с HTML, CSS или Flash.Масштабирование в соответствии с разрешением, но не в Flash CS4

Работа идет хорошо, но после того, как я помог ей развернуть сайт (через File-> Publish), мы столкнулись с некоторыми проблемами. Она построила фильм .swf с разрешением 1000x750 пикселей. После проверки полученного веб-сайта на моем 24-дюймовом мониторе в 1920x1200, все выглядело действительно пиксельно (в фильме используются изображения, а не векторная графика). Не проблема! Я решил, что мы должны просто отключить масштабирование в вариантах публикации Flash, и мы будем хороши.

Однако отключение масштабирования, видимо, представил новую проблему, что фильм не мог теперь больше не будет должным образом просматривалась на компьютерах, работающих под низкие (< = 1024x768) разрешением.

Я предполагаю, что поведение, которое мы ищем, чтобы только масштаб down фильм в соответствии с разрешением экрана просмотра браузера/браузером, но не масштабируется. Flash (CS4), похоже, не включает это как вариант в свои варианты публикации. e методы, позволяющие такое поведение?

ответ

1

Нет встроенной опции для того, что вы описываете, но ее легко достичь с помощью скриптов, либо со стороны Flash, либо со стороны JavaScript. Я поставлю фрагмент кода в конце ответа, который должен вас отключить и запустить.

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

Теперь вы можете справиться с этим, добавив минимальный размер, ниже которого Flash перестает масштабироваться, но затем вы начинаете делать много предположений о том, как пользователи захотят увидеть ваш сайт. Вместо этого вам нужно спросить, что бы пользователь с небольшим монитором (или маленьким окном браузера) ожидал сайта? И ответ на этот вопрос: показать сайт полноразмерным и добавить полосы прокрутки. И за мои деньги, это то, что должен делать ваш сайт.

Итак, в вашем HTML (или в настройках экспорта HTML Flash) встройте SWF в контейнер 1000x750. Это будет препятствовать масштабированию SWF для любого пользователя - на вашем мониторе вы увидите немасштабированный сайт с центром (или с верхним левым выравниванием или что-то еще) в окне, а на меньших мониторах вы увидите, что весь сайт немасштабирован, с полосами прокрутки браузера ,

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


Теперь, как и обещал, вот фрагмент кода флэш-AS3, что должно дать вам достаточно фору, чтобы сделать все, что угодно с масштабированием. Это должно дать вам желаемый эффект, если вы опубликовали свою Flash-версию в контейнер, который занимает все окно браузера, при этом значение параметра scalemode равно «no scale».

// perform initial size check 
checkStageSize(); 

// register to re-check when stage size changes 
stage.addEventListener(Event.RESIZE, onResize, false, 0, true); 
function onResize(e:Event) { 
    checkStageSize(); 
} 

// do the scaling here 
function checkStageSize():void { 
    var wid:Number = stage.stageWidth; 
    var hi:Number = stage.stageHeight; 
    var needToScaleDown:Boolean = (wid < 550); // or some other test 
    if (needToScaleDown) { 
     var scale:Number = wid/550; 
     someContent.scaleX = someContent.scaleY = scale; 
    } else { 
     someContent.scaleX = someContent.scaleY = 1; 
    } 
} 

Это предполагает, что «someContent» относится к контейнеру держит все, что вы хотите масштабировать, с его точки регистрации в нуле стадии (в верхнем левом углу). Нет простого способа автоматически масштабировать весь фильм, поэтому вместо этого вы захотите разместить свой контент в клипе и маске контейнера.

Не стесняйтесь размещать сниппет выше в рамке на сцене, изменять «someContent», чтобы ссылаться на контейнер, который вы можете масштабировать, и поиграть с ним. Но я действительно думаю, что вы завершаете решение, что использовать его просто невозможно, показывая сайт немасштабированным.