Reputation: 29
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
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