/** * Function that turns any number into it's roman numeral * equivelant. * We have to use an array to hold the values as if we use * a Dictionary / Object actionScript sorts it alphabetically. * and we don't get the correct results. * * @param value : Number 0 - 9999; */ public static function romanize( value : Number ) : String { var numerals : Array = [ { label : 'M', value : 1000 }, { label : 'CM', value : 900 }, { label : 'D', value : 500 }, { label : 'CD', value : 400 }, { label : 'C', value : 100 }, { label : 'XC', value : 90 }, { label : 'L', value : 50 }, { label : 'XL', value : 40 }, { label : 'X', value : 10 }, { label : 'IX', value : 9 }, { label : 'V', value : 5 }, { label : 'IV', value : 4 }, { label : 'I', value : 1 } ] var roman : String = ''; for( var i : String in numerals ) { while( value >= numerals[ i ].value ) { roman += numerals[ i ].label; value -= numerals[ i ].value; } } return roman; }
January 27, 2009
Number Romanizer
I was messing around on a personal project today and had to build a simple converter to change numbers into Roman Numerals. Below is the result. Had a few issues trying to use a simple object to hold the numerals as ActionScript was sorting the object Alphabetically which meant I was getting false results especially with 4's which would return four 'I''s instead of the correct 'IV'.
January 5, 2009
Time Calculator
I recently found a post about someone needing a good time calculator and seeing as I had recently written one for the redbullracing website I figured I should improve it and release it here.
Features
- Calculates time bi-directionally ie: if the date is in the past it will tell you the time since it elapsed or if it is in the future it will tell you the time left until it elapses.
- Optionally set a expiration string to be returned when the date has been reached.
- Fires a TimeCalculator.TIME_EXPIRED event when the time expires.
- Set the precision level of the return values. ( YEARS, MONTHS, DAYS, WEEKS, HOURS, MINUTES, SECONDS, MILLISECONDS ). This allows you to return values for example where the date is 1 year 2 months in the future but you don't care about the years you just want the number of months, days, hours, minutes, seconds, milliseconds till that date. ie 13 months, 30days, 23hours, 59minutes, etc...
- Individual time accessors ie get Years( ); Months( ); Days( ); etc... until the due date.
- Set labels and separators to be returned with the time strings labels( 'years', 'months' ). 01years : 01months.
- Optionally set removeEmptyTImes = false; This will display values that have no time associated with them. For example for a date 2 months in the future with a precision set to YEARS, the default return value from _timeCalculator.calculateTime( ); would be 01 : 30 : 23 : 59 : 59 : 999 with the years not being returned and the date starting at the months. However if you set removeEmptyTimes = false the return date would be 00 : 01 : 30 : 23 : 59 : 59 : 999 showing the years as 00 values.
- Turn off individual time ammounts so if you wanted just the years, months and days for a given date you can set showHours = false; This will cut the date at the Days and only return YEARS : MONTHS : DAYS.
As usual you can right click to view the source.. Any comments suggestions or errors please leave a comment.
System.vmVersion
A fellow Senior Rich Internet Applications Developer at work Sam found a nice new undocumented attribute in the Systems package today. vmVersion seems to return the current Flash player virtual machine running on your computer. Mine, and Sams for that matter traces out as 1.0 cyclone. Not sure how useful this is but interesting none the less.