Определение версии Flash-плагина

Исходный файл: Version.fla

Язык ActionScript во Flash 4 и 5 отличался так сильно, что ролик со сложным сценарием, созданный во Flash 5, скорее всего вообще бы не работал при использовании плеера четвертой версии. Однако Flash 5 и Flash MX достаточно сходны для того, чтобы ролик с кодом, созданным в версии MX, мог достаточно часто работать во Flash 5-плеере.
Это создает интересную проблему. Довольно легко сделать игру во Flash MX, которая будет работать у многих людей с Flash 5-плеером до какого-то момента. Когда же попадется участок кода, требующий Flash MX-плеера, игра или перестанет работать, или начнет вести себя непредсказуемым образом. Как узнать версию плеера Необходимо убедиться, что у пользователей установлен плеер шестой версии, прежде чем он начнет игру. Сделать это можно с помощью функции getVersion().
Функция getVersion () возвращает строку вида MAC 6,0 21,0. Первое слово - это аббревиатура платформы, обычно MAC или WIN. Вторая часть - это версия Flash-плеера, в настоящий момент запущенная на пользовательской машине.
Каждая часть номера версии отделена запятыми. Это создает трудности при сравнении имеющейся версии с требуемой. Как вы, например, определите, MAC 6,0 21,0 больше или равно версии 6?
С помощью некоторых операций со строкой вы можете перевести значение, возвращаемое функцией getVersion () во что-нибудь более пригодное к использованию. Следующая функция разбивает строку, используя пробелы и запятые как разделители. Она создает переменную -объект, к которому вы можете легко обращаться.

function getVersionNumber() {
// Определяем позиции запятых и пробелов.
spacePos = getVersion().indexOf(" ");
firstComma = getVersion().indexOf(",");
secondComma = getVersion().indexOf(",",firstComma+1);
thirdComma = getVersion().indexOf(",",secondComma+1);
lastChar = getVersion().length;
// Создаем объект version.
version = new Object();
version.platform = getVersion().substring(0,spacePos);
version.n1 = getVersion().substring(spacePos+1,firstComma);
version.n2 = getVersion().substring(firstComma+1,secondComma);
version.n3 = getVersion().substring(secondComma+1,thirdComma);
version.n4 = getVersion().substring(thirdComma+1,lastChar);
return(version);
}

В результате работы getVersionNumber получится примерно следующее:

{platform: MAC, nl: 6, n2: 0, пЗ: 21, п4: 0}

Таким образом, если вы хотите получить главный номер версии Flash, просто используйте getVersionNumber () .n1.

Требуемые версии

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

function requiredVersion(required) {
version = getVersionNumber();
// Возвращаем false, если номер версии меньше необходимого,
if (version.nl < required.nl) return(false);
// Возвращаем true, если номер версии больше необходимого,
if (version.nl > required.nl) return(true);
// Главные позиции номера совпадают, сравниваем следующие
// позиции.
if (version.n2 < required.n2) return (false);
if (version.n2 > required.n2) return (true);
if (version.n3 < required.n3) return (false);
if (version.n3 > required.n3) return (true);
if (version.n4 < required.n4) return (false);
if (version.n4 >= required.n4) return (true);

Вы можете использовать эту функцию так:

if (requiredVersion) ({nl: 6, n2: 0, пЗ: 21, п4:0})}
gotoAndPlay("start");
} else {
gotoAndStopt"version problem");}

ЕСЛИ версия пользователя меньше, чем 6.0.21.0, ролик переходит к кадру, который объясняет, что данная игра требует обновления версии плеера.

Все коды в функциях getVereionNumber и requiredVersion будут работать и с Flash бис Rash 6. Весь код ничего не будет стоить, если будет работать только с Flash 6. Идея состоит в том, чтобы предупредить пользователя Flash 5-плеера о возможных проблемах.

Обычное данную функцию предполагается использовать для того, чтобы обнаруживать небольшие обновления Flash-плеера. Предположим, например, что Macromedia выпускает Flash версии 6.0.42.0. Эта версия содержит исправление, которое необходимо для корректной работы вашей игры. Вы должны проверить, есть ли у пользователя данная версия, и предупредить его, если ее нет.
Важно, чтобы эта проверка возвращала true только в том случае, если у пользователя установлена требуемая версия или более новая. Обычная ошибка, которую делает программист, это поиск точного номера версии, например, 6. Тогда, если у пользователя установлена 5-я или любая другая версия, он получает предупреждение о необходимости обновления. Спустя год выходит версия 7, а поскольку версия 7 также не является версией 6, пользователь получает точно такое же предупреждение! Я постоянно сталкиваюсь с этим в программировании во Flash, Stockwave и JavaScript. Функция requiredVersion всегда возвращает true если версия пользователя более новая, чем требуемая.

Возможности Flash 6-плеера

Кроме выяснения номера версии Flash-плеера, вам также может понадобиться узнать другие возможности пользовательского варианта плеера. Флэш может работать на разных платформах, например, на карманных компьютерах. Некоторые из этих устройств неспособны поддерживать весь набор свойств, которыми оперирует Flash 6 на MAC и Windows.
Вы можете проверить некоторые характеристики системы с помощью объекта System.capabilities. Свойства этого объекта содержат требуемые параметры. Вот пример кода, который совершает цикл по всем свойствам и возвращает каждое значение.

// Список всех свойств.
capabilitiesDisplay = "";
for(i in System.capabilities) capabilitiesDisplay += i"+: "+System.capabilities[i] + newline;}

Возвращаемый список выглядит примерно так на моем Macintosh Powerbook:

language: en-US
input: point
manufacturer: Macromedia Macintosh
os: Mac OS 10.1.3
serverString:
A=t&MP3=t&AE=t&VE=t&ACC=f&DEB=t&V=MAC%206%2C0%2C21%2C0&M=Macromedia
Macintosh&R=1152x768&DP=72&COL=color&AR=l&I=point&OS=Mac OS
10.1.3&L=en
isDebugger: true
version: MAC 6,0,21,0
hasAudio: true
hasMP3: true
hasAudioEncoder:true
hasVideoEncoder: true
screenResolutionX: 1152
screenResolutionY:768
screenDPI: 72
screenColor: color

Одна из проблем, связанных с использованием System.capabilities,состоит в том, что нет никакой гарантии, что названия свойств и типы значений остаются постоянными от плеера к плееру. Вам придется проверить System.capabilities на любой системе, на которой хотите проигрывать ваш клип. Потом вам нужно составить лист возможных свойств и значений, которые хотите проверить. Например, вы можете заметить,что на некоторых плеерах hаsМРЗ не работает, а некоторые плееры даже не показывают свойство hаsМРЗ. Поскольку Flash 6-плеер может быть подсоединен к разным машинам, только время покажет, насколько различным может быть список System, capabilities работает.
Одно из полезных применений System.capabilities состоит в том, что можно взять значения свойств screenResolutionX и screenResolutionY, чтобы, например, сообщить пользователю, что установки его монитора соответствуют размеру экрана, который слишком мал для удобного просмотра вашего ролика. Вы также можете разбить на части свойство System, capabilities, os, также, как мы уже разбирали get .Version О , чтобы можно было проверить, обладает ли пользователь достаточно новой версией операционной системы.