Recipe 2.2 Detecting the Operating System

2.2.1 Problem

You want to know the operating system under which the Flash movie is being played, perhaps to indicate which operating systems are not supported or to implement a platform-specific feature.

2.2.2 Solution

Use the $version or System.capabilities.os property.

2.2.3 Discussion

In Recipe 2.1, we saw that the $version property string includes the operating system on which the Player is running. The operating system can be either "MAC", "WIN", or "UNIX".

playerParts = _level0.$version.split(" ");
switch (playerParts[0]) {
  case "MAC":
    gotoAndStop ("WelcomeMac");
  case "WIN":
    gotoAndStop ("WelcomeWindows");
  case "UNIX":
    gotoAndStop ("WelcomeUnix");

As of Flash 6, you can use the System.capabilities.os property, which returns a string indicating the operating system and version name. Possible values include "Windows XP", "Windows 2000", "Windows NT", "Windows 98/Me", "Windows 95", and "Windows CE". On the Macintosh, the string includes the version number, such as "MacOS 9.2.1" or "MacOS 10.1.4".

You can make design choices based on the operating system. For example, your movie might load different assets depending on the user's operating system, or you may simply want to record the operating systems of the users who view your movies for statistical analysis.

If all you care about is the general platform type instead of the specific version, you can check just the first three letters of the string, as follows:

os = System.capabilities.os.substr(0, 3);
if (os == "Win") {
  // Windows-specific code goes here.
} else if (os == "Mac") {
  // Mac-specific code goes here.
} else {
  // Must be Unix or Linux

    Part I: Local Recipes
    Part II: Remote Recipes