paleozogt
paleozogt

Reputation: 6563

getting swf version info

In FlashBuilder's compiler options (Properties->Flex Compiler), under "Adobe Flash Player options" there is an option for "Use a specific version", where you can tell it what Flash Player to link against:

enter image description here

How do I get this value at runtime? Note that I am not talking about the Flash Player version, but the version that the swf was linked against.

Upvotes: 2

Views: 7132

Answers (5)

KARASZI István
KARASZI István

Reputation: 31467

We were facing the same problem at my company, and we've found the following mappings:

 "SWF Version" | "Flash Player Version"
========================================
       9       |          9
      10       |      10.0, 10.1
      11       |         10.2
      12       |         10.3
      13       |         11.0
      14       |         11.1
      15       |         11.2
      16       |         11.3
      17       |         11.4
      18       |         11.5
      19       |         11.6
      20       |         11.7
      21       |         11.8
      22       |         11.9
      23       |         12.0
      24       |         13.0
      25       |         14.0

Sources:

Upvotes: 2

shaunhusain
shaunhusain

Reputation: 19748

Are you doing this with a project that you can modify or are you trying to find the version of a swf file after the build, if it's the former you can modify the index.template.html to include flash vars using the build variables as parameters then retrieve these at runtime.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                layout="absolute"
                creationComplete="application1_creationCompleteHandler(event)">
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.events.FlexEvent;

            protected function application1_creationCompleteHandler(event:FlexEvent):void
            {
                // TODO Auto-generated method stub
                Alert.show(Application.application.parameters.fpVersion);
            }
        ]]>
    </mx:Script>
</mx:Application>

my index.template.html

<html lang="en">

<!-- 
Smart developers always View Source. 

This application was built using Adobe Flex, an open source framework
for building rich Internet applications that get delivered via the
Flash Player or to desktops via Adobe AIR. 

Learn more about Flex at http://flex.org 
// -->

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<!--  BEGIN Browser History required section -->
<link rel="stylesheet" type="text/css" href="history/history.css" />
<!--  END Browser History required section -->

<title>${title}</title>
<script src="AC_OETags.js" language="javascript"></script>

<!--  BEGIN Browser History required section -->
<script src="history/history.js" language="javascript"></script>
<!--  END Browser History required section -->

<style>
body { margin: 0px; overflow:hidden }
</style>
<script language="JavaScript" type="text/javascript">
<!--
// -----------------------------------------------------------------------------
// Globals
// Major version of Flash required
var requiredMajorVersion = ${version_major};
// Minor version of Flash required
var requiredMinorVersion = ${version_minor};
// Minor version of Flash required
var requiredRevision = ${version_revision};
// -----------------------------------------------------------------------------
// -->
</script>
</head>

<body scroll="no">
<script language="JavaScript" type="text/javascript">
<!--
// Version check for the Flash Player that has the ability to start Player Product Install (6.0r65)
var hasProductInstall = DetectFlashVer(6, 0, 65);

// Version check based upon the values defined in globals
var hasRequestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);

if ( hasProductInstall && !hasRequestedVersion ) {
    // DO NOT MODIFY THE FOLLOWING FOUR LINES
    // Location visited after installation is complete if installation is required
    var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";
    var MMredirectURL = window.location;
    document.title = document.title.slice(0, 47) + " - Flash Player Installation";
    var MMdoctitle = document.title;

    AC_FL_RunContent(
        "src", "playerProductInstall",
        "FlashVars", "MMredirectURL="+MMredirectURL+"&MMplayerType="+MMPlayerType+"&MMdoctitle="+MMdoctitle+"&fpVersion="+requiredMajorVersion+requiredMinorVersion+requiredRevision+"",
        "width", "${width}",
        "height", "${height}",
        "align", "middle",
        "id", "${application}",
        "quality", "high",
        "bgcolor", "${bgcolor}",
        "name", "${application}",
        "allowScriptAccess","sameDomain",
        "type", "application/x-shockwave-flash",
        "pluginspage", "http://www.adobe.com/go/getflashplayer"
    );
} else if (hasRequestedVersion) {
    // if we've detected an acceptable version
    // embed the Flash Content SWF when all tests are passed
    AC_FL_RunContent(
            "src", "${swf}",
            "width", "${width}",
            "height", "${height}",
            "align", "middle",
            "id", "${application}",
            "quality", "high",
            "bgcolor", "${bgcolor}",
            "name", "${application}",
            "allowScriptAccess","sameDomain",
            "type", "application/x-shockwave-flash",
            "flashVars", "&fpVersion="+requiredMajorVersion+requiredMinorVersion+requiredRevision,
            "pluginspage", "http://www.adobe.com/go/getflashplayer"
    );
  } else {  // flash is too old or we can't detect the plugin
    var alternateContent = 'Alternate HTML content should be placed here. '
    + 'This content requires the Adobe Flash Player. '
    + '<a href=http://www.adobe.com/go/getflash/>Get Flash</a>';
    document.write(alternateContent);  // insert non-flash content
  }
// -->
</script>
<noscript>
    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
            id="${application}" width="${width}" height="${height}"
            codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
            <param name="movie" value="${swf}.swf" />
            <param name="quality" value="high" />
            <param name="bgcolor" value="${bgcolor}" />
            <param name="allowScriptAccess" value="sameDomain" />
            <embed src="${swf}.swf" quality="high" bgcolor="${bgcolor}"
                width="${width}" height="${height}" name="${application}" align="middle"
                play="true"
                loop="false"
                quality="high"
                allowScriptAccess="sameDomain"
                type="application/x-shockwave-flash"
                pluginspage="http://www.adobe.com/go/getflashplayer">
            </embed>
    </object>
</noscript>
</body>
</html>

If this is what you want to do you'll probably want to fill in the variables in the noscript block as well and add some delimiters for the version but I just wanted to see if this worked as I expected and if it's what you're going for in the first place.

Upvotes: 1

Sean Fujiwara
Sean Fujiwara

Reputation: 4546

You can't get that exact target version. You can get the SWF file version, but that is not the same. When you edit the target version in that panel, Flex compiles against a different playerglobal.swc, but doesn't necessarily change the SWF file version.

Upvotes: 1

jhocking
jhocking

Reputation: 5577

This may or may not apply to your specific use case, you might need to explain what exactly you're doing. At any rate:

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/LoaderInfo.html#swfVersion

Upvotes: 1

Sean Coyne
Sean Coyne

Reputation: 3884

This was answered in December here: How can I determine what flash player version a swf was published for?

Upvotes: 0

Related Questions