Dunraven
Dunraven

Reputation: 29

version request fail error by versions dots?

I'm trying to create a version query in as3.

Search for Current version works fine

var appXml1:XML = NativeApplication.nativeApplication.applicationDescriptor;
var ns1:Namespace = appXml1.namespace();
var current1:String = appXml1.ns1::versionNumber[0];

Online search for new Version works fine

var apploader:URLLoader = new URLLoader();
var apprequest:URLRequest = new URLRequest("http://XXX/app/version/app.xml");
apprequest.method = URLRequestMethod.POST;
apploader.load(apprequest);
var xml:XML = XML(apploader.data);

I fail at the if Statement

if (xml.version > current1)
{
    gotoAndStop(3);
}

Current version is 2.0.0

New online version is 2.0.1

Code is in frame 2, when testing the movie does not stop in frame 3 but remains on frame 2

I suspect the error by the dots in the version number. Is that possible? How could I solve the problem.

Thank you (sorry for my bad english)

Upvotes: 1

Views: 56

Answers (1)

Nicolas Siver
Nicolas Siver

Reputation: 2885

I wrote utility function, very simple, to test versions. You compare versions, and result can be 1 - if version1 greater than version2, 0 - version1 and version2 are equal, -1 - version 1 lower than version2

private function compareVersions(version1:String, version2:String):int {
    var v1:Array = version1.split("."), v2:Array = version2.split(".");
    var i:uint, len:uint = v1.length;

    for (i; i < len; ++i) {
        if (v1[i] > v2[i]) {
            return 1;
        } else if (v1[i] < v2[i]) {
            return -1
        }
    }

    return 0;
}

How to use:

var currentVersion: String = "2.0.1";
var lastVersion: String = "2.0.0";
if(compareVersions(currentVersion, lastVersion) > 0){
    trace("Current version is greater! Yes!");
}

Upvotes: 1

Related Questions