Archive for the ‘ Adobe AIR ’ Category

Dynamically create instance of Vector class

AS3 don’t let us dynamically create an instance of class Vector with elements of various types, the solution is use getDefinitionByName.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package
{
    import flash.system.ApplicationDomain;
    import flash.utils.getQualifiedClassName;  

    public class ClassUtils
    {
        static private const  VECTOR_CLASS_NAME : String = getQualifiedClassName( Vector );

        static public function getVectorDefinition(itemDefinition : Class, applicationDomain : ApplicationDomain = null) : Class
        {
            if(!applicationDomain) applicationDomain = ApplicationDomain.currentDomain;
            return applicationDomain.getDefinition( VECTOR_CLASS_NAME + '.<' + getQualifiedClassName( itemDefinition ) + '>' ) as Class;
        }      
        static public function createCustomVector(itemDefinition : Class, length : uint = 0, fixed : Boolean = false, applicationDomain : ApplicationDomain = null) : Vector.<*>
        {
            var definition : Class = getVectorDefinition( itemDefinition, applicationDomain );
            return new definition( length, fixed );
        }      
    }
}

To get definition of Vector class with specified item type:

1
2
3
4
var itemType:Class = Sprite;
var definition:Class = ClassUtils.getVectorDefinition(itemType);
trace(definition); // [class Vector.<flash.display::Sprite>]
trace(getQualifiedClassName(definition)); // __AS3__.vec::Vector.<flash.display::Sprite>

To create Vector class instance with specified item type:

1
2
3
var itemType:Class = Sprite;
var vector:Vector.<*> = ClassUtils.createCustomVector(itemType);
trace(getQualifiedClassName(vector)); // __AS3__.vec::Vector.<flash.display::Sprite>

Extending AIR Applications With Plugins

Interesting article showing how to extend the capabilities of our AIR project using plugins.

Link: Extending AIR Applications With Plugins

AS3 Differents approaches for image format read/write.

JPEG

FP10 – Asynchronous jpeg encoding width Alchemy
http://segfaultlabs.com/devlogs/alchemy-asynchronous-jpeg-encoding
http://segfaultlabs.com/devlogs/swf/alchemy/jpeg_alchemy.zip

FP9 – Merging BitmapData objects to single JPEG file
http://blog.inspirit.ru/?p=289
http://blog.inspirit.ru/wp-content/uploads/jpgmerge/jpeg_encoder.rar

GIF

http://code.google.com/p/as3gif/

Decoding
http://as3gif.googlecode.com/files/GIFPlayer%200.6.zip

Encoding
http://as3gif.googlecode.com/files/GIFEncoder%200.1.zip

PNG

Async PNG encoding and merging
http://blog.inspirit.ru/?p=378
http://code.google.com/p/in-spirit/wiki/PNGEncoder
http://in-spirit.googlecode.com/files/PNGEncoder.swc.zip

BMP

Decoder
http://snippets.libspark.org/trac/wiki/munegon/BMPDecoder

Encoder
http://www.senocular.com/flash/actionscript/?file=ActionScript_3.0/com/senocular/images/BMPEncoder.as

TIFF

Encoder:
ActionScript 3 TIFF Encoder
http://blog.kevinhoyt.org/?p=319
http://blog.kevinhoyt.org/wp-content/tiff-encoder.zip

Decoder
http://www.ctyeung.com/AIR/index.html
http://code.google.com/p/windowsbitmapdencoder/downloads/list
http://windowsbitmapdencoder.googlecode.com/files/FileLoader_v_0_5_0.zip

ICO

Decoder
http://www.libspark.org/wiki/munegon/ICODecoder