В SWF-файл встроено свойство цвета фона (например, частота кадров, размеры по умолчанию и т. Д.), Но среда встраивания, обычно HTML, может переопределить все эти настройки во время встраивания. Кроме того, некоторые из них могут быть переопределены ActionScript во время выполнения. Однако цвет фона SWF не попадает в эту последнюю категорию.
Вместо этого вы можете использовать графический API для рисования прямоугольника позади всего, например сделав следующее:
root.graphics.beginFill(0xffcc00); // Replace with your color
root.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
Если есть риск, что ваш SWF изменится, вы должны поместить две вышеупомянутые строки в обработчик событий и добавить их в качестве слушателя на сцену для Event.RESIZE, например:
function handleStageResize(ev : Event) : void
{
root.graphics.clear();
root.graphics.beginFill(0xffcc00); // Replace with your color
root.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
}
// Add the listener
stage.addEventListener(Event.RESIZE, handleStageResize);
Также обратите внимание, что есть некоторые проблемы с некоторыми более старыми браузерами, когда главная точка входа в ваш ActionScript будет вызываться до того, как размеры стадии были правильно установлены (это означает, что stage.stageWidth
и stage.stageHeight
оба возвращают 0), поэтому Возможно, вы захотите подождать один кадр, прежде чем в первый раз вызывать вышеуказанный код рисования.
Этот метод намного лучше использования режима прозрачного окна и изменения фона за SWF (в HTML), поскольку использование wmode=transparent
может иногда вызывать странные проблемы (например, ошибки ввода с клавиатуры в некоторых браузерах) и снизит производительность, часто значительно.
Всегда используйте прозрачный wmode, если вам действительно нужно, чтобы он был прозрачным, например когда за ним есть HTML-элементы, которые должны быть видны.