Уменьшение до соответствия разрешению, но не до Flash CS4 - PullRequest
0 голосов
/ 17 сентября 2009

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

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

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

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

1 Ответ

1 голос
/ 17 сентября 2009

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

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

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

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

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


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

// 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», чтобы ссылаться на контейнер, который вы можете масштабировать, и поэкспериментируйте с ним. Но я действительно думаю, что вы в конечном итоге решите, что удобнее всего просто показывать сайт в масштабе.

...