Code Formating for Flex
This is one thing flex and flash are missing. Code formating.
I've tested few eclipse plugins but none of them worked like this one. You can download it from http://sourceforge.net/projects/flexformatter/
Just copy it in your ecplise/plugins folder and restart. You can also import/export your settings in a .properties file
Ctrl-Shift-F is the default shortcut key to format the selected code. Also it's possible to assign another shortcut combination or using the red circled button on the image above.
Blend Modes
If you wonder, what blendmodes are doing exactly, you can read this article about blendmodes in common. I tried to work with them in a accurate way to emulate complexer algorithms like animated water waves. Generically you can save a lot of performance, if you need to calculate every single pixel colorvalue from two bitmaps. In most cases, there is a simple solution using ColorTransform and Blendmodes. One problem is that the flash results are different in some cases, so here are my findings:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | // **BLENDMODES // based on: http://www.pegtop.net/delphi/blendmodes/ // modified to fit flash output // ADD c = Math.min( 255, Math.max( 0, c0 + c1 ) ) // SUBTRACT c = Math.max( 0, c0 - c1 ) // MULTIPLY c = Math.floor( ( c1 * c0 ) / 0xff ) // SCREEN c = 255 - Math.floor( ( 255 - c0 ) * ( 255 - c1 ) / 255 ) // LIGHTEN c = c0 > c1 ? c0 : c1 // DARKEN c = c0 < c1 ? c0 : c1 // DIFFERENCE c = c0 > c1 ? c0 - c1 : c1 - c0 // INVERT ( no influence from c1 ) c = 255 - c0 // OVERLAY c = c0 < 128 ? Math.floor( ( c1 * c0 ) / 127 ) : 255 - Math.ceil( ( 255 - c0 ) * ( 255 - c1 ) / 127 ) // HARDLIGHT c = c1 < 128 ? Math.floor( ( c1 * c0 ) / 127 ) : 255 - Math.ceil( ( 255 - c0 ) * ( 255 - c1 ) / 127 ) |
For example if you like to compute the average colors from 2 different bitmaps, you can follow like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import flash.display.*; import flash.geom.*; //-- test here 2 colorvalues var c0: Number = 234; var c1: Number = 255; //-- source bitmaps var b0: BitmapData = new BitmapData( 1, 1, false, c0 ); var b1: BitmapData = new BitmapData( 1, 1, false, c1 ); //-- resulting bitmap var be: BitmapData = new BitmapData( 256, 256, false, 0 ); //-- compute average var half: ColorTransform = new ColorTransform( .5, .5, .5, 1, 0, 0, 0, 0 ); be.draw( b0, new Matrix, half ); be.draw( b1, new Matrix, half, 'add' ); trace( be.getPixel( 0, 0 ) ); trace( Math.floor( ( c0 + c1 ) / 2 ) ); |
Of course this is a simple one, but you get the idea.