Kinesis SoftwareKineticFusion

[Show Table of Contents]

11 Configuring KineticFusion

[Hide Table of Contents]



11.3 KineticFusion Properties Details

11.3.1 General Properties

11.3.1.1 kinesis.preload

This property defines the behavior of the KineticFusion application on startup. The KineticFusion application takes several seconds to load in the application and optimize the compiler. This delay is normally encountered when the first ActionScript script block is analyzed by the application. This startup for processing the first ActionScript blocks can be greatly decreased by setting the value of this property to 'true'. When set, the KineticFusion compiler will load in all application components used by the application when the application first starts and initialize the compiler by loading all top-level intrinsic class definitions.
Value Type Boolean
false
Application and compiler are loaded and initialized on demand
true
Application and compiler are loaded and initialized on startup
Default Value true

11.3.2 General Repository properties

11.3.2.1 kinesis.repository.directory

When KineticFusion converts SWF movies to RVML it extracts all multimedia resources from the SWF movie and stores these in a separate repository location. When the property 'kinesis.repository.isRelative' is false or undefined, all repositories are located under the name of the directory specified by this property. A repository is created for each SWF movie using the name of the RVML output file and the word "Resources" e.g. for an output document called myMovie.rvml, a repository directory will be created called myMovieResources. Currently, five different types of resources are supported by KineticFusion: sound, image, font, video, and Classes and each resource type is stored in a separate subdirectory in the repository. A reference to the absolute location to the repository is stored in the RVML file so this property is not used when compiling RVML back to SWF. The repository is also used as the default location for storing decompiled ActionScript 2.0 classes.

This property is also used to define the default base repository path for Repository elements with a 'File' type that do not have an explicit repositoryBase attribute defined.

Value Type Directory
Default Value ${Installation Directory}/projects/repository

11.3.2.2 kinesis.repository.isRelative

When KineticFusion converts SWF movies to RVML it extracts all multimedia resources from the SWF movie and stores these in a separate repository location. When this property is true, all new repository locations are created relative to the location of the output RVML document. The 'kinesis.repository.relativePrefix' property can be used to specify additional subdirectories under which the repository is created.
Value Type Boolean
false
New repositories will be created under the directory specified by the property 'kinesis.repository.directory'
true
New repositories will be created relative to the location of the output RVML document
Default Value false

11.3.2.3 kinesis.repository.overwrite

When an SWF movie is being converted to RVML, all resources are stored in a repository. When an SWF movie is converted several times then the same resources may be stored in the repository multiple times. When this property is set to 'false', should a file with the same name as a resource already exist, a new file with an additional suffix is created e.g. if a file Image1.jpg already exists in the repository and an SWF is decompiled again, then this will result in a new resource called Image1_00000001.jpg being created. This can result in a resource repository quickly getting filled up with many duplicate resources. When this property is set to 'true', resources will be overwritten if they already exist in the repository. This will stop the repository from getting cluttered with duplicate files, however all existing RVML documents that reference the repository may refer to incorrect resources.
Value Type Boolean
false
Create new resources when decompiling new SWF
true
Overwrite existing resources when decompiling new SWF
Default Value false

11.3.2.4 kinesis.repository.relativePrefix

When KineticFusion converts SWF movies to RVML it extracts all multimedia resources from the SWF movie and stores these in a separate repository location. When the property 'kinesis.repository.isRelative' is true, this property defines an additional path to be added to the repository under the directory containing the output RVML file. When left blank or undefined, the repository for an SWF is placed in the same directory as the RVML file. To prevent pollution of the directory, a user can use this property to ensure that the resources for all RVML files in that directory are stored in a single common subdirectory. For example, when decompiling an swf to Test.rvml in directory c:/rvml, when this property is blank the movie repository is stored in c:/rvml/TestResources. When this property is set to 'repository', the movie repository is stored in c:/rvml/repository/TestResources.
Value Type String
Default Value Blank

11.3.2.5 kinesis.repository.systemFontPath

KineticFusion can use TrueType fonts for rendering static and dynamic text. TrueType fonts generally contain a large number of character representations and hinting information. Rather than extracting this font information from the font file every time it is requested in RVML, TrueType fonts can be imported into the KineticFusion application in native format and stored in the System font path. Fonts in the system font path can be be referenced by font name alone. System fonts are also used to augment font information to in RVML documents that are missing glyphs after editing. All missing glyphs and metrics, if available, are automatically imported on demand from the corresponding system font.
Value Type String representing a location where system fonts can be stored
Default Value None

11.3.2.6 kinesis.repository.defaultSystemFont

When modifying RVML documents, it is possible to change text within a static or dynamic text field to contain characters that are not available in the original font. KineticFusion will automatically look for missing characters in a system font of the same name. However, if no system font can be located, this property defines a replacement font family that should be used for all missing characters. KineticFusion will attempt to match all the style attributes of the missing font characters, e.g. bold, italic, using the Windows font naming convention when selecting a font from the default family to use as a replacement. The Windows font naming convention adds Bold and Italic suffixes to the font name e.g. Arial, Arial Bold, Arial Italic, Arial Bold Italic. If the specific font style cannot be found, then the normal font is used.
Value Type String representing the default font family name to be used
Default Value None

11.3.2.7 Image Resource Properties

11.3.2.7.1 kinesis.repository.storeJPEGExternal

The JPEG image format is an optimized 'lossy' image format in which the storage size of the image can be reduced at the expense of a (normally) slight reduction in image quality. This compression ability makes it one the most common image formats in use today, especially for photographic images. JPEG images can be created, viewed and edited with virtually all graphical packages. SWF movies can contain JPEG images, stored in the SWF when it is published. When KineticFusion decompiles an SWF movie all JPEG images are extracted to SWF movies that contain only the image. The SWF movie is sized to exactly the dimensions of the image and is created with a red background, so any alpha-channel in the image can be clearly seen. The application will also extract all JPEG images into valid JPEG image files when this property is 'true' so that these images can be modified using an image-processing application. The resource description in RVML will always refer to the SWF resource type even when this property is set to 'true' as KineticFusion can read images from SWF movies quicker than from JPEG image files. The resource description in RVML can be edited manually to refer to the JPEG image if the image is edited externally.
Value Type Boolean
false
Do not create copy of resource as external JPEG image
true
Create copy of resource as external JPEG image
Default Value false

11.3.2.7.2 kinesis.repository.storeLosslessExternal

There are many image formats for storing lossless image information, the most popular being the GIF format. Due to licensing issues, a new image format call PNG is replacing GIF images as the storage format of choice for storing lossless images. Lossless images are often used instead of JPEG images when using images that are produced from vector sources that can be highly compressed e.g. maps, cartoons. PNG images can be created, viewed and edited with many graphical packages. SWF movies can contain lossless images, derived from any of the popular lossless image formats, stored in the SWF when it is published. When KineticFusion decompiles an SWF movie all lossless images are extracted to SWF movies that contain only the image. The SWF movie is sized to exactly the dimensions of the image and is created with a red background, so any alpha-channel in the image can be clearly seen. The application will also extract all lossless images into valid PNG image files when this property is 'true' so that these images can be modified using an image-processing application. The resource description in RVML will always refer to the SWF resource type even when this property is set to 'true' as KineticFusion can read lossless images from SWF movies much quicker than from PNG image files. The resource descripton in RVML can be edited manually to refer to the PNG image if the image is edited externally. The creation and importing of PNG images take up considerable processing resources so the preferred storage format is SWF.
Value Type Boolean
false
Do not create copy of resource as external PNG image
true
Create copy of resource as external PNG image
Default Value false

11.3.3 RVML Output Properties

11.3.3.1 kinesis.xml.dtdLocation

This property defines the location of the RVML DTD document that can be used to validate the document. The value of this property is embedded into the header of all RVML documents in the format specified by the outputValidatingXML property. The RVML DTD is distributed with KineticFusion and is found in the installation 'config' directory.
Value Type Path to RVML.dtd
Default Value dtd/RVML.dtd

11.3.3.2 kinesis.xml.outputBOM

KineticFusion uses UTF-8 for all output documents. This is thought to be the most efficient character for representing XML documents and will be able handle all character sets supported by the Flash platform. However, KineticFUsion must guess at the encoding of all input RVML documents. The encoding attribute of the XML declaration is optional so KineticFusion reads in some sample data from the beginning of the file to determine the encoding. The UTF-8 Byte-Order-Mark (BOM) is a three-byte marker at the beginning of UTF-8 documents (0xef 0xbb 0xbf) that automatically signals to all Unicode-aware processors that the document is in UTF-8 format.
If KineticFusion cannot not find a character code greater that 127 in the first 4K of the input document, the document is assumed to be in ISO-8859-1 encoding. This is a common 8-bit Latin encoding. However, should any UTF-8 characters be embedded within the document outside of the first 4K they will incorrectly decoded.
When this configuration property is enabled, KineticFusion will output a UTF-8 BOM marker at the beginning of all RVML documents. While this is the most exact manner of identifying the document as UTF-8, many editors and processors are still not Unicode-aware and cannot interpret the BOM byte sequence. Adding a UTF BOM can cause other XML processors to abort as the XML declaration, where defined, must be the first character of a document. Non Unicode-aware processors may instead believe that the XML declaration is not until the fourth character.
See also the documentation on
kinesis.xml.outputUTFComment
Value Type Boolean
false
Do not write a UTF-8 BOM at the beginning of each RVML output document
true
Write a UTF-8 BOM at the beginning of each RVML output document
Default Value false

11.3.3.3 kinesis.xml.outputUTFComment

KineticFusion uses UTF-8 for all output documents. This is thought to be the most efficient character for representing XML documents and will be able handle all character sets supported by the Flash platform. However, KineticFusion must guess at the encoding of all input RVML documents. The encoding attribute of the XML declaration is optional so KineticFusion reads in some sample data from the beginning of the file to determine the encoding. By writing a single character comment after the XML declaration of the output RVML document, KineticFusion will automatically be able to detect the encoding of the input document by reading the first line of the document. The comment is empty except for a single non-breaking space character (0xa0).
Using a comment instead of a UTF-8 means that editors or other document processors that are not Unicode aware will not generate an error thinking the XML declaration is not the first character of the document. Using a comment with UTF-8 content avoids this problem.
See also the documentation on
kinesis.xml.outputBOM
Value Type Boolean
false
Do not write a UTF-8 comment after the XML declaration at the top of each RVML output document
true
Write a UTF-8 BOM comment after the XML declaration
Default Value true

11.3.3.4 kinesis.swf.inputEncoding

All strings stored in an SWF movie are encoded using a specific encoding format. Since SWF version 6, this encoding format has been standardized and uses the "UTF-8" format. However in SWF versions less than 6, strings are encoded in SWF movies in a locale-specific way, using an implicit character encoding. For most SWF movies, this encoding defaults to the default locale of the authoring environment. KineticFusion will use the default system locale when reading SWF movies of version 5 or lower. If an SWF movie has strings in a different encoding, then this property should be set to the name of the desired encoding.
Value Type Encoding String
Default Value UTF-8

11.3.3.5 kinesis.xml.outputFontDefinitions

SWF movies can contain a number of embedded font definitions. An SWF font definition contains a definition of each glyph exported with the font, plus optional additional metrics information for defining inter-glyph properties. KineticFusion normally exports all font resources to the repository to be stored in SWF movies however each font can be represented as RVML instead. When this property is set to 'true', a 'FontDefinition' RVML tag is defined for each embedded font and all associated font information is output as RVML. This can be very useful when a user wishes to reuse a glyph outline as an RVML symbol or to alter the metrics of a font however, for large fonts, this can cause any resulting RVML document to become extremely large. It is recommended that SWF font resources be used for production RVML documents.
Value Type Boolean
false
Store all font resources in SWF format
true
Output FontDefinition elements for all embedded font resources
Default Value false

11.3.3.6 kinesis.xml.colorFormat

The KineticFusion RVML parser can accept color specifications in a number of different formats: named colors, 'rgb(r,g,b)' tuples with opacity attributes, 'rgba(r,g,b,a)' tuples, and SVG-style hexadecimal formats. For readability purposes, KineticFusion outputs colors by name if possible by default. When not possible it outputs colors using the 'rgb(r,g,b)' tuple format with an optional opacity attribute, in the range of 0 to 1, if the alpha channel value is not 100%. This configuration option permits a developer to override the color output format.
Value Type String
name_rgb
The name of the color is used, if known, otherwise an rgb tuple and opacity attribute is used to represent the color
name_rgba
The name of the color is used, if known, otherwise an rgba tuple is used to represent the color
name_hex
The name of the color is used, if known, otherwise an rgb hex format (#rrggbb) and opacity attribute is used to represent the color
name_hexa
The name of the color is used, if known, otherwise an rgba hex format (#rrggbbaa) is used to represent the color
rgb
An rgb tuple and opacity attribute is used to represent the color
rgba
An rgba tuple is used to represent the color
hex
An rgb hex format (#rrggbb) and opacity attribute is used to represent the color
hexa
An rgba hex format (#rrggbbaa) is used to represent the color
Default Value name_rgb

11.3.3.7 kinesis.xml.outputOptionalBounds

Several SWF symbols have bounds that are explicitly stored within the SWF movie. However, most symbols do not specify explicit bounds. The bounds of a symbol are very useful for calculating the transformation attributes required to scale symbols when placing and minipulating them on the timeline.
When this attribute is enabled KineticFusion will automatically calculate the bounds for MorphShape, Button, and MovieClip symbols and add a bounds attributes to the RVML symbols. These attributes are informational only.
Value Type Boolean
false
Do not calculate or output optional bounds attributes
true
Calculate and output optional bounds attributes for MorphShape, Button and MovieClip symbols
Default Value true

11.3.3.8 kinesis.xml.shortPlaceElements

Each Place element and Alter element in RVML can have a Transform child element that defines an absolute geometric transform to be applied to the symbol. In many cases the action of the Transform element is unclear as there is no reference to the actual height or width attributes of the symbol being replaced.
When this propererty is enabled, all geometric transforms for symbols placed or altered on the timeline are analyzed to see if they can be more simply expressed in terms of the width, height and rotation of of the symbol. If so, then the Transform element is discarded and the new attributes are added to the Place/Alter elements for width, height, and rotation.
There are both advantages and disadvantages to this approach. The advantage is that it adds much more semantic information to the timeline operation, and makes it much easier to highlight the function of the transform. The main disadvantage is that if the content of the symbol changes before recompilation, the modified content could affect the attributes of the symbol and so cause the new timeline operation to use a different transform than the original.
Value Type Boolean
false
Do not replace Transform elements, even where possible.
true
Replace all Transform elements with attributes, where possible
Default Value true

11.3.3.9 kinesis.xml.outputValidatingXML

This property allows the user to configure the XML header of all RVML documents produced by decompiling SWF movies. When an RVML document is compiled to SWF format, the input RVML is not checked for total conformity with the RVML DTD. This can permit an invalid RVML document structure to be processed and output as SWF. When this property is set to true, the XML header output at the top of the RVML document contains an uncommented reference to the DTD defined by the 'kinesis.xml.dtdLocation' property. When false, the DTD reference is still output but within an XML comment so that a user may enable the DTD manually by editing the document and removing the comment delimiters.
Value Type Boolean
false
A commented DTD reference will be output in the header of all RVML documents
true
An active DTD reference will be output in the header of all RVML documents
Default Value false

11.3.3.10 kinesis.actionscript.resolveSWFClasses

ActionScript 2.0 is a valuable representation for ActionScript classes but the underlying compiled representation of an AS 2.0 class is the same as that used in AS 1.0. This means that when AS 2.0 classes are decompiled, they will be decompiled as AS 1.0 ActionScript, and its corresponding RVML configuration symbols. When this property is true, all input SWF movies are analyzed for the presence of AS2.0 classes. All discovered classes will be removed from the RVML document and reconstituted in the class subdirectory of the movie repository. Additionally all classes will be analyzed to ensure that field references are fully resolved and visibility rules for AS2.0 classes are adhered to. Classes decompiled in this way are suitable for compilation by the KineticFusion compiler, however they may lack a lot of the semantic information found in the original source class. The default visibility information for all class methods, constructors and properties is public while all fields default to private visibility. In addition, dynamic classes may be changed to ordinary classes and augmented instead with additional fields that were referenced for the class. Type information is not currently restored for these classes though this will be a feature of a later version of KineticFusion. When this property is set to false, all output ActionScript will be in AS 1.0 format. When converting a resulting document to SWF, the analyzeScripts property should be disabled since there will be many class references in this code to classes that are already defined implicitly in AS1.0.
Value Type Boolean
false
Input SWF movies will not be analyzed for the presence of AS2.0 classes.
true
Input SWF movies will be analyzed for the presence of AS2.0 classes, and all classes will be extracted and stored in the repository.
Default Value true

11.3.3.11 kinesis.actionscript.storeDuplicateSystemClasses

When KineticFusion decompiles SWFs containing AS2.0 classes, it will extract all class definitions and store them in the repository (for more information on this see kinesis.actionscript.resolveSWFClasses ). The class path for these decompiled classes is added to the generated RVML so that all classes used in the movie can be located when regenerating an SWF. On recompiling all classes specified in the ClassPath element inside an RVML document take precedence over classes that are found on either the system or user class path.

When an SWF contains AS2.0 classes for which the user already has the source code for, it is frequently preferable that the original source code is used when recompiling the RVML document, rather than the classes generated on decompiling. When this option is set to false, all decompiled classes that can also be located on the system class path ( see kinesis.actionscript.systemClassPath ) are discarded and are not stored in the class repository. On recompilation, the class definition on the system class path will instead be used for compilation.

A similar property, kinesis.actionscript.storeDuplicateUserClasses exists for determining the behavior of class found on the user class path

Value Type Boolean
false
All classes found on the system class path will be discarded
true
All classes found on the system class path will also be included in the decompiled class repository
Default Value true

11.3.3.12 kinesis.actionscript.storeDuplicateUserClasses

When KineticFusion decompiles SWFs containing AS2.0 classes, it will extract all class definitions and store them in the repository (for more information on this see kinesis.actionscript.resolveSWFClasses ). The class path for these decompiled classes is added to the generated RVML so that all classes used in the movie can be located when regenerating an SWF. On recompiling all classes specified in the ClassPath element inside an RVML document take precedence over classes that are found on either the system or user class path.

When an SWF contains AS2.0 classes for which the user already has the source code for, it is frequently preferable that the original source code is used when recompiling the RVML document, rather than the classes generated on decompiling. When this option is set to false, all decompiled classes that can also be located on the user class path ( see kinesis.actionscript.userClassPath ) are discarded and are not stored in the class repository. On recompilation, the class definition on the user class path will instead be used for compilation.

A similar property, kinesis.actionscript.storeDuplicateSystemClasses exists for determining the behavior of class found on the system class path

Value Type Boolean
false
All classes found on the user class path will be discarded
true
All classes found on the user class path will also be included in the decompiled class repository
Default Value true

11.3.3.13 kinesis.actionscript.unicodeConstants

ActionScript can contain constant text strings. These strings can be composed of any standard Unicode characters. When ActionScript string constants are defined in source code, they can be defined as normal characters (in an editor that supports the viewing and editing of such characters), or using the standard Unicode notation of \Uxxxx, where xxxx represents the character code for the character. When KineticFusion decompiles string constants, it can convert all characters with a code greater than 127 to Unicode character notation. This is the default behavior when this property is set to true. When set to false, the characters are output directly however they may be converted to XML Unicode entities if the property kinesis.xml.unicodeEntities is set to true.
Value Type Boolean
false
Output Non-ASCII characters in native format
true
Output non-ASCII characters as Unicode constants
Default Value true

11.3.3.14 kinesis.xml.unicodeEntities

XML documents can represent text content in a number of ways. Since all Unicode characters are valid XML characters, these characters can be embedded in any RVML text without additional processing. Not all document viewers and editors, however, have the necessary font sets or capabilities to render these character correctly. KineticFusion will output all characters with a character code less than 127 as a standard character. If this property is set to true, then all characters with codes greater than 127 will be output as Unicode character entities - that is, the numeric character code, prefixed with a '#' character and suffixed with a semicolon. When false, then all characters, regardless of their character code will be output as standard characters.
Value Type Boolean
false
Output Non-ASCII characters in native format
true
Output non-ASCII characters as Unicode character entities
Default Value true

11.3.4 SWF Output Properties

11.3.4.1 kinesis.swf.outputEncoding

All strings stored in an SWF movie are encoded using a specific encoding format. Since SWF version 6, this encoding format has been standardized and uses the "UTF-8" format. However in SWF versions less than 6, strings are encoded in SWF movies in a locale-specific way, using an implicit character encoding. For most SWF movies, this encoding defaults to the default locale of the authoring environment. KineticFusion will use the default system locale when writing SWF movies of version 5 or lower. If an output SWF movie is to have strings in a different encoding, then this property should be set to the name of the desired encoding.
Value Type Encoding String
Default Value UTF-8

11.3.4.2 kinesis.swf.outputMetadata

Each RVML document can contain structured metadata information for the overall document and for each symbol within the document. This metadata can specify a title for the RVML document and a description for each document symbol. Using metadata is the preferred manner for documenting RVML symbols as it permits the roundtripping of documentation that would otherwise be lost, when stored in comments. When this property is set to 'true', a compressed block of data is added to the end of any SWF created by KineticFusion. This block contains all the Title and Desc elements defined in the movie, and this is used to recreate metadata when the SWF is re-read. The overhead associated with this block is quite small since the block is compressed (regardless of the compressed nature of the movie). It is recommended that metadata is output only for development RVML documents and not for production RVML documents, since it may allow other users to recreate your RVML document more easily.
Value Type Boolean
false
Discard all movie and symbol metadata on movie output
true
Add compressed block at end of movie containing all Title and Desc elements that can be reconstituted on input. The Metadata element is not currently stored.
Default Value false

11.3.4.3 kinesis.swf.outputSymbolNames

Each symbol used in an RVML document has a unique symbol ID. When an SWF movie is converted to RVML these symbol IDs are allocated to each symbol based on any identifier allocated to the symbol or container of the symbol within the SWF move e.g. if a symbol is exported with the name 'Square', KineticFusion will assign the ID 'Square' to the symbol; if a symbol is placed on the timeline of a MovieClip with name 'Clip' and an instance name of 'Square' KineticFusion will create a symbol ID of 'Clip.Square' for the symbol. For those symbols whose names cannot be derived then generic names are created for the symbols instead.

SWF movies have no concept of symbol ID names but instead use numeric IDs. If a symbol is given an ID that does not correlate with the KineticFusion-assigned ID then this ID will be discarded when the SWF movie is created. When the user is performing round-trip processing of RVML movies, it may be desirable to ensure that symbol names are maintained (round-tripping can be useful for verification purposes, or for simplifying symbols by resolving ShapeTransforms, Paths, Arcs etc). When this property is set to 'true', a compressed block of data is added to the end of any SWF created by KineticFusion. This block contains the symbol name for each symbol ID in the movie, and this is used to recreate symbol IDs when the SWF is re-read. The overhead associated with this block is quite small since the block is compressed (regardless of the compressed nature of the movie). It is recommended that symbol names are output only for development RVML documents and not for production RVML documents, since it may allow other users to recreate your RVML document more easily.
Value Type Boolean
false
Discard all symbol name information on movie output
true
Add compressed block at end of movie containing all precompiled symbol names
Default Value false

11.3.4.4 kinesis.xml.validate

When an RVML document is compiled to SWF format, KineticFusion will assume the document is conformant with the RVML specification and the input RVML is not checked against the RVML DTD. This can permit an invalid RVML document structure to be processed and output as SWF. When this property is set to true, the header of the RVML document must reference a valid DTD for the RVML vocabulary. This allows verification of the input RVML and ensures that all elements and attributes are correctly specified. Should the input RVML document not match the required document structure as required DTD, an error will be reported indicating the location and type of the error. As wrongly structured documents are a frequent cause of error, validation is extremely useful for debugging purposes. It is recommended to validate RVML documents frequently during development, however there is no need to revalidate existing correct RVML documents as validation requires additional computing resources. Validation against the RVML Schema, also located in the installation 'config' directory, is also possible when supported by the XML parser used, and the appropriate XML header is defined in the document. More information about configuring different XML parsers can be found in the Installation Readme.
Value Type Boolean
false
No validation is performed on input RVML documents. The validation feature of the parser is turned off.
true
All input RVML documents are validated. By default, documents are validated against a DTD and a DTD must be specified in the header of the RVML document. All errors will be reported to the user.
Default Value false

11.3.5 Logging Properties

11.3.5.1 kinesis.logging.logFile

KineticFusion logs all output to both the KineticFusion GUI console and to the application standard output. When this option is defined, it specifies an additional file for all logging output. This is useful when the output of the KineticFusion compiler or class analyzer is to be processed automatically to automatically identify errors or execution status. The behavior of the log file is further determined by the kinesis.logging.appendFile property
Value Type File name
Default Value None

11.3.5.2 kinesis.logging.appendFile

When the kinesis.logging.logFile property is defined, all log output is written to the specified log file in addition to the normal destinations. This property specifies the behavior of the application when writing to the log file. When true, the existing contents of the file remain unchanged and all new log output is appended to the log file. When false, all existing file content is discarded. If the file does not already exist, this option is ignored.
Value Type Boolean
false
If a log file is specified, it is truncated on application startup
true
If a log file is specified, then all logged output will be appended to the specified file
Default Value false

11.3.5.3 kinesis.logging.logActionScriptToConsole

When KineticFusion is running in GUI mode, all ActionScript messages are written to the output Warnings table. This option is used when running KineticFusion in command-line mode for defining whether ActionScript warnings should be logged to the normal logging console. It is overridden in the GUI by the persistent menu option View->Log ActionScript to Console thaqt defaults initially to false. When enabled, the entire text of the error message is printed out with the name of the file, the error ID, and the source line.
Value Type Boolean
false
ActionScript warnings and errors are not logged to the console
true
ActionScript warnings and errors are logged to the console
Default Value true

11.3.5.4 kinesis.logging.format

KineticFusion current produces all log messages in the following format:
Warning|Error :- (Error Number) Message
Location (as <FileName>, Line: <line>, Col: <col>)
Source Line
Some IDEs require log messages in different fonts that this. One such IDE is NetBeans that requires all location output to be in the form:
<FileName>:<line>:<col>
If the specified format canot be interpreted then the output defaults to the normal KineticFusion style. In the future, if it is desirable, we may use external templates to specify the logging format.
Value Type String
netbeans
Use the NetBeans format for representing location information
kf
Use the normal KineticFusion logging format
Default Value kf

11.3.6 ActionScript Properties

11.3.6.1 ActionScript Parsing Properties

11.3.6.1.1 kinesis.actionscript.analyzeScripts

All ActionScript defined within an RVML document or referenced by an RVML document can be in either AS 1.0 format or AS2.0 format. While the KineticFusion compiler accepts AS2.0 syntax for all scripts, this property can be used to indicate whether type-checking should be enabled and external classes referenced. When true, all declared types and class references are resolved using the defined class paths for the document or application. All referenced classes are compiled, analyzed and output in the resulting SWF document. Classes defined using AS 1.0 convention can still be used however intrinsic class definitions must exist on the class path for all such classes. When false, no RVML or included scripts will be analyzed and no external classes will be compiled into the resulting SWF movie. This property should be enabled for all AS 2.0 development environments.
Value Type Boolean
false
All RVML movies are standalone, and references to external AS2.0 classes are ignored.
true
All scripts inside input RVML movies are analyzed for references to external AS2.0 classes. These classes are loaded as necessary and included in SWF movies.
Default Value true

11.3.6.1.2 kinesis.actionscript.useMetadata

KineticFusion supports the definition of metadata for classes and class members. This enables additional constraints to be defined that implement concepts not supported in ActionScript such as 'final' abstract' and 'const'. This functionality is implemented using Javadoc comments that precede each class or class member declaration.
When this option is disabled, all defined metadata is ignored and not included in any semantic analysis. As metadata is only used to enforce constraints this will have no negative impact on compiling code however it is recommended that this option only be disabled for production environments or when it is suspected that metadata is being interpreted incorrectly. The application must be restarted when this property is changed.
Value Type Boolean
false
No ActionScript class metadata will be parsed or used during semantic analysis
true
All defined ActionScript metadata will be used during semantic analysis
Default Value true

11.3.6.1.3 kinesis.actionscript.enableWarningMessages

The KineticFusion compiler performs a detailed semantic analysis of all AS2.0 code. While the number of warning messages may appear overwhelming, each warning messages indicates the location of a possible error condition in the associated ActionScript code. While it is recommended that warning messages be disabled individually, should the warning be unwarranted, it is also possible to suppressed all generated warning messages. When this property is enabled, only messages configured as Errors will be reported to the user. This property should only be disabled for production systems which may speed compilation. For development systems it is recommended that warning messages be disabled only within a given RVML document or individually using the ErrorConfiguration.properties file. Otherwise legitimate warnings may be suppressed.
Value Type Boolean
false
No warning level messages will be output for all AS2.0 script compilations.
true
All warning messages for classes on any of the user class paths will be generated.
Default Value false

11.3.6.1.4 kinesis.actionscript.includePath

It is possible to include external source files into any internal or external ActionScript script using the #include directive. This property indicates the root paths used to try and locate all referenced include files. All path components must be separated with a semicolon. Relative include locations are only permitted from within included files, not directly within the RVML document e.g. '../include/includeMe.as' will only use the include paths to look up the AS file location, not relative to the RVML file itself. When a nested include directive is encountered in an external ActionScript file, the compiler will first search from the location of the referencing ActionScript file before searching the include path.
Value Type String containing one or more directories, each separated by a semicolon
Default Value The application CLASSPATH.

11.3.6.1.5 kinesis.actionscript.logCachedClasses

When KineticFusion compiles a class, it stores the class and all dependency information in an in-core class cache. When a reference is made to a class, the cache is first checked to see if an already compiled class definition exists is current. A cached copy of a class is used for subsequent documents providing the class itself and all of its dependencies have not changed. When analyzing dependencies, only interface changes in a dependent class trigger an automatic recompilation of a cached class. When this option is enabled, all class references that are served by cached classed are logged to the console. This option may be useful in a development environment but should be disabled in production environments.
Value Type Boolean
false
No logging of classes retrieved from the application class cache is carried out.
true
All references to AS2.0 classes that are retrieved from the application class cache are logged.
Default Value false

11.3.6.1.6 kinesis.actionscript.logParsedClasses

When a reference is found to an ActionScript class, the application class cache is firstly check to see if a current definition for class already exists. If the class does not exist in the cache or is not current, then the class is loaded from its ActionScript source. When this option is enabled, all class references that are compiled from ActionScript source are logged to the console. This option may be useful in a development environment but should be disabled in production environments.
Value Type Boolean
false
No logging of parsed classes is carried out.
true
All classes that are compiled, or recompiled, from source will be logged
Default Value false

11.3.6.1.7 kinesis.actionscript.packagesAreStable

When KineticFusion searches for ActionScript class references it scans all defined class paths for ActionScript files to build up a list of potentially valid class definitions. When this property is true, then the class path scan procedure is only performed once, and all discovered package hierarchies are cached for future use. This will speed up the compilation process as any external ActionScript class path is only checked once. However, when a user creates a new ActionScript class, it will not be discovered by the KineticFusion compiler without restarting the application. When this property is false, the class paths are scanned every time an RVML document is processed. It is recommended that this property is set to true for production systems.
Value Type Boolean
false
Available classes are discovered before analysis of each RVML document referencing AS2.0 classes.
true
All possible class files are discovered when a class path is first referenced. The creation of new class files will not be picked up by the compiler.
Default Value false

11.3.6.1.8 kinesis.actionscript.slashIDSupport

Slash notation was used for identifying symbols such as movie clips and buttons in the Flash 4 player. All symbols were identified by a full path using notation very similar to that used in navigating directory hierarchies. The root timeline was identified by '/', a symbol 'x' placed on the root timeline was identified by '/x' and a property of the symbol 'x' identified by '/x:property'. The current 'dot' notation superseded this notation in the Flash 5 player, and this notation is no longer used for most purposes. However, SWF movies containing Slash notation can be successfully decompiled, and it will be necessary to enable this property to recompile the RVML. Slash notation is forbidden in ActionScript 2.0 as the syntax 'a:b' is ambiguous, and when compiling a movie with an SWF version of seven or higher. An additional constraint when Slash notation is enabled is that a space is mandatory after all colons within conditional expressions to avoid ambiguity. All in all, it is recommended to disable this property unless slash notation support is absolutely necessary.
Value Type Boolean
false
Slash Identifier support in ActionScript is not supported on RVML input
true
All Slash Identifier constructs are correctly parsed as normal identifiers.
Default Value false

11.3.6.1.9 kinesis.actionscript.systemClassPath

This property defines the location for intrinsic classes and optional component classes referenced in RVML documents or by the Class Analyzer. Analysis and compilation of classes located on this path are treated differently than those on the user class path. The key differences are:
  • The package names "System" and "TextField" are permitted on this class path. These packages share the same name as classes and this is forbidden by the KineticFusion compiler. However, since these classes and packages are intrinsic and defined within the player, they are permitted.
  • All compilation warnings for classes on the system class path are discarded. This is extremely useful when working with class hierarchies from 3rd parties. As it is expected that these hierarchies are tested and stable then warning messages are disabled. This permits a development group to implement coding standards that may conflict with those of 3rd parties. The system class path is a good location to place the V2 component classes, if they are used by the user.
The installation classes directory contains a set of intrinsic class definitions shipped with KineticFusion. On installation, the systemClassPath property in the config/KineticFusion.properties file is set to this directory. Multiple class path elements can be defined on the system path: they must be separated by a semicolon character (';'). Note: the System class path is searched AFTER the user class path so it is possible for a user to override a system class with a class on the user class path.
If a class path element contains sub-folders of the form FP<Version> (for example, FP7 or FP8) then the folders will be interpreted as version-specific class folders and the contents of the sub-folders will be used for locating classes depending on the output version.
Value Type Single directory location of root of system class hierarchy
Default Value None

11.3.6.1.10 kinesis.actionscript.useCachedClasses

When KineticFusion compiles a class, that class is stored in the application class cache. As long as the cached class is considered to be current, it will be returned for all future references to the class. Classes are added to the cache after successful compilation providing no compilation errors are found, however all compilations warnings are ignored. When this property is set to false, then a reference to an ActionScript class results in the class being compiled from source. This may be useful when a user wants to see all compilation warnings generated for a particular RVML document. When false, then the class cache is used to try and resolve all class references. It is recommended that this property is set to true for production systems.
Value Type Boolean
false
ActionScript classes are reparsed and warnings regenerated for each RVML document.
true
Class files are not recompiled between RVML documents unless necessary due to the class or its dependencies being modified
Default Value true

11.3.6.1.11 kinesis.actionscript.userClassPath

KineticFusion permits compilation of ActionScript classes referenced in RVML script blocks or using the Class Analyzer. This property specifies the list of root class directories to be used for locating all user classes. Multiple path components can be specified and all path components must be separated with a semicolon(';'). All classes parsed from these locations are subject to strict error reporting (subject to the enableWarningMessages property). When a class reference is found, each class path component is searched in the order in which they are defined in the property value. If a referenced class cannot be found on the user class path, the system class path is then searched.
If a class path element contains sub-folders of the form FP<Version> (for example, FP7 or FP8) then the folders will be interpreted as version-specific class folders and the contents of the sub-folders will be used for locating classes depending on the output version. Normally, such a path structure is suitable only for the intrinsic classes and is only located on the system path.
Value Type String containing one or more directories, each separated by a semicolon
Default Value None

11.3.6.2 ActionScript Code Generation Properties

11.3.6.2.1 kinesis.actionscript.logLoadedClasses

It can be unclear, when creating a SWF movie containing AS2.0 classes, what classes are included in the SWF. ActionScript classes can reference many other ActionScript classes and this can result in SWF movies becoming larger than expected. It is also possible that classes that are intended to be distributed with the SWF movie are omitted. When this property is enabled, all classes stored in the output SWF movie are listed on the console in the order in which they will be created.This is useful to verify that all desired classes are loaded and to verify the load order of specific classes. If a dynamic reference to a class is required that affects the load order, this can be specified with the IncludeClass element in RVML. This option can be useful in a development environment but should be disabled in production environments.
Value Type Boolean
false
No logging of used classes is carried out.
true
All AS2.0 classes embedded in an output SWF movie are listed, in the order in which they will be loaded.
Default Value false

11.3.6.2.2 kinesis.actionscript.optimizeFunctions

Flash players with a version of 6.0.65 and higher include new ActionScript optimizations. The effect of these optimizations are to reduce the invocation time for global and anonymous functions, and greatly speed up the execution of functions containing parameters and local variables. In addition to this speed increase, a side effect of these optimizations is that resulting SWF movies are smaller in size. This works primarily by changing local variable references to quick lookups, removing the variable name and replacing it with a table index. While there are many benefits to this, there are a few caveats also:
  • SWFs produced that contain this optimization will only run on players of Versions 6.0.65 or higher
  • The names of all local variables will be deleted and will not exist on decompilation
  • Any variable accessed within a With block cannot be optimized
  • No block containing an eval statement within the block or child block (e.g. a function within a function) can not have its variables optimized since the variable names may be required by the eval statement at runtime. If eval statements are used, but only reference global variables then it is a good idea to add a new eval() method to the String prototype or reference a global function that performs the eval operation instead.
Value Type Boolean
false
No optimization of ActionScript is carried out.
true
All ActionScript functions will be analyzed and qualifying functions will be compressed using new optimization techniques supported in Flash Player Version 6.0.65 and higher.
Default Value false

11.3.6.2.3 kinesis.actionscript.removeTraceStatements

Trace function calls are frequently used for debugging scripts. The trace() function is a native function and it normally used to print statements to a debugger, during development. Rather than remove all trace statements manually, it is possible for KineticFusion to remove all trace() function calls from generated code. This will increase both execution speed and reduce the output movie size. Removing trace statements may have side-effects however, as the expression passed as an argument to the function is also discarded e.g.
i=0;
while( i < 10)
 trace( i++); // discarded so loop becomes infinite
These side effects can also be useful as the trace() function can be used to embed enhanced debugging calls during development, and these can be stripped out automatically on production e.g.
trace(myLocalConnection.printValue( value));
Value Type Boolean
false
All trace() functions are output by the compiler
true
All trace() function calls and their arguments are removed by the compiler
Default Value false

11.3.6.2.4 kinesis.actionscript.replaceTraceStatements

Trace function calls are frequently used for debugging scripts. The trace() function is restricted to the Macromedia Flash development environment and trace output cannot normally be caught from a running SWF movie. Thankfully there are a growing number of powerful third-party logging components and debugging tools available that provide superior functionality.

This property specifies an ActionScript code fragment that is used to replace all trace() statements at compile-time. The code fragment is normally a single line of code but it can also contain multiple statements separated by semicolons.

In order to ensure that this feature is fully compatible with the Macromedia compiler, the trace statement that is replaced is case-insensitive and must have a single argument.

The script fragment used to replace the trace statements supports placeholder identifiers so that the specified logging script can receive all expected parameters. The following placeholder identifiers are currently supported:

__ARG
The single argument to the original trace statement
__CLASS
The name of the class containing the trace statement. This is a String constant.
__METHOD
The name of the class method containing the trace statement. This is a String constant.
__FILE
The name of the file containing the trace statement. This is a string constant.
__LINE
The line on which the trace statement was defined. This is a numeric constant.

For example, to replace all trace() calls to call to a static method if a logging class, the trace statement could be represented as:

com.kinesis.Trace.log(__ARG, __METHOD, __CLASS);

Care should be taken that the code that performs the tracing functionality does not, itself, contain a trace() statement as this can cause an infinite loop.

Developers have a choice of how they wish to continue to add tracing statements to an application. Our recommendation is to continue to use the trace() method as trace statements can be completely removed from an output SWF using the kinesis.actionscript.removeTraceStatements configuration option. By continuing to use trace statements, different logging frameworks can be plugged in and out of your SWF application without changing a single line of code.

Value Type String
Default Value none

11.3.6.2.5 kinesis.actionscript.setterReturnsValue

ActionScript classes provide for class properties that are defined as methods using additional get/set qualifiers. KineticFusion correctly translates these methods to properties however there are two different conventions for the implementation of the 'setter' method. Classes compiled using the Macromedia compiler add an additional automatic invocation of the 'get' method of a property at the end of the 'set' method. Hence, every time a property is set, the 'get' method is also called. While it may be envisioned that this is necessary for expressions in which the property is used in an assignment chain( e.g. var = property = value;), in practice the 'value' expression is the expression passed back to all assignees.

KineticFusion, by default does not return the value from an assignment to a property. As a result, property accessors execute quicker and display more intuitive behavior. This property can be enabled, however, for code that depends on this feature. Note: it may be necessary to enable this property should the 'get' property methods of a class be required to exhibit similar behavior under multiple ActionScript compilers.
Value Type Boolean
false
No AS2.0 'set' property methods will have an implicit return value generated.
true
At the end of each 'set' property method, an implicit call is made to the 'get' method for the property.
Default Value false

11.3.6.2.6 kinesis.actionscript.warnBlockSize

The is an implicit restriction of 32765 bytes on the size of the executable code within an ActionScript class. This limit is due to a restriction on the implementation of classes within the Macromedia compiler - while it is possible to get around this restriction, it would mean that classes would only compile with KineticFusion so we have chosen to also enforce the restriction. The 32K limit includes all embedded String constants but it does not include any String constant tables. This can make it difficult for a developer to know when the class size is approaching the 32K limit.
This option defines a logging threshold for the number of executable bytes that are permitted in any ActionScript block (including inline RVML blocks). When the number of generated bytes exceed the specified value, a log message is output specifying the name of the class (or location of the block) and the actual size of the generated bytecode. This can be used as an early indicator to refactor ActionScript classes. The threshold does not include the size of the String constant table which can have an independent size of 64K for each block.
It is possible to get the size of all output blocks by setting the value of this property to some low number e.g. 1. This will then print out the size of all ActionScript bytecode blocks as they are being generated.
Note that when the 32K limit is exceeded, KineticFusion will automatically perform additional space optimization on embedded String constants which will generally provide several thousand more bytes of breathing space - this will be logged on the KineticFusion console and it is highly recommended that classes are refactored at this stage.
Value Type Integer
0
No threshold monitoring is performed
> 0
The threshold number of generated 'executable' bytes after which logging occurs
Default Value 0

11.3.7 Component Properties

11.3.7.1 kinesis.components.path

KineticFusion is able to include SWC components in both compilation and decompilation without having to specify the entire component as RVML. This configuration property can be used to specify one or more folders in which to look for referenced SWC components. The path can be a compound path with each path component separated by a semicolon.
Once the paths are defined KineticFusion will automatically search the specified folders and all sub-folders for SWC files. During decompilation, the specified paths are used to identify components whose assets can be removed from the output RVML document, if the
kinesis.components.resolve property is set.
Value Type String containing one or more directories, each separated by a semicolon
Default Value None

11.3.7.2 kinesis.components.resolve

SWC components, when represented in RVML, can needlessly complicate RVML output, adding all the symbol definitions and resources to the output RVML. When this property is set to true, all defined components on the component path (see the kinesis.components.path property) are retrieved and the input SWF is automatically checked for each component. Each discovered component is automatically removed from the RVML output and replaced instead with a short Component element that specifies that the component should be included in the SWF on compilation.
It should only be necessary to include SWC components in RVML output if a developer does not have access to SWC component archives or wishes to modify the component or its assets in some way.
Value Type Boolean
false
The RVML is output containing all embedded SWC component assets and symbols
true
The RVML is output with only placeholders for SWC components and all associated symbols and assets are stripped from the RVML
Default Value false

11.3.7.3 kinesis.components.logMissingAssets

KineticFusion will only resolve embedded components from an SWF if it can ensure that all the contents of the component exist within the SWF. This ensures that SWFs containing symbols with the same name as components are not accidentally identified as components and removed. However, should the assets associated with an external component be augmented since the component was added to the SWF, KineticFusion will not be able to fully identify the component. When this option is enabled, KineticFusion will log all the required symbols in the component that do not exist in the SWF. If the developer know that the component is the correct component, then these logged assets can be added to the kinesis.components.ignoreAssets property to resolve the component regardless.
Value Type Boolean
false
Components that cannot be fully identified are ignored
true
All missing assets of potential components are logged
Default Value false

11.3.7.4 kinesis.components.ignoreAssets

KineticFusion will only extract embedded components from an SWF if it can ensure that all the contents of the component exist within the SWF. If a component has been upgraded since the SWF was originally created then the assets in the component may not match the assets stored in the SWF. In this case, it is still desirable that the component be identified and resolved so that the RVML will reference the most up-to-date component on compilation. This property defines a list of space-separated or comma-separated names representing assets that are not required within an SWF in order to resolve embedded components. This option is only applicable if kinesis.components.logMissingAssets option, used to retrieve the list of missing assets, is enabled.
Value Type String containing one or more asset names separated by comma or space characters
Default Value None

11.3.8 Datasource Properties

11.3.8.1 kinesis.datasources.globalLocation

KineticFusion is able to include dynamic data from external datasources when compiling RVML. Each RVML document can have any number of datasources defined within it however it is also possible to define a single global datasource for the application. The values defined in this datasource are available to all RVML documents compiled by the application. It can be used to define global paths, dimensions, colors, or any other arbitrary data that can be referenced within RVML either within attribute expressions (using the syntax ${expression}) or Template elements.
The global datasource is a Java properties document containing data in the form dotted_name=value.
This property defines the location of the global datasource, and is specified as either an absolute file name or URL. The type of the location defaults to 'File' but this can be changed with the
kinesis.datasources.globalType property.
Value Type String representing a single file or URL
Default Value None

11.3.8.2 kinesis.datasources.globalType

KineticFusion is able to include dynamic data from external datasources when compiling RVML. The location of the global datasource is specified using the kinesis.datasources.globalLocation property. By default, this property references a file but this property can be used to change the interpretation of the location to a URL
Value Type String
File
The specified location should be interpreted as a file
URL
The specified location should be interpreted as a URL
Default Value File

11.3.9 Template Properties

11.3.9.1 kinesis.templates.templateRoot

RVML can be created dynamically when processing an RVML document by using templates. By default, KineticFusion automatically supports the FreeMarker templating language. When Template elements are found within an RVML document, they can be defined either inline or taken from an external template file.
When external template files are used, the location specified on the Template element is relative to the template root folder as specified by this property. All templates used in RVML processing must reside under this folder and the system will not permit file addresses outside this location. This property is ignored for Template locations specified as URLs.
Value Type String representing a single folder under containing all template files
Default Value The startup folder for the application, as identified by the user.dir property (the value of this can be displayed, when running the GUI, in the Help->About KineticFusion->System tab).

11.3.9.2 kinesis.templates.defaultEncoding

When an external template file is being loaded for processing, it is important to know the encoding of the template. Where an encoding is not explicitly specified in RVML for a particular template, the value of this property is used to specify the encoding of the template. It will default to the standard Latin encoding unless explicitly specified.
Value Type Encoding String
Default Value ISO-8859-1

11.3.9.3 kinesis.templates.defaultLocale

Some of the template operations require the outputting of text, numeric and date information. The default locale of the application is used to format these strings in accordance with rules specified by the output operations. A specific locale can be specified for each template specified in an RVML document. When no locale information is specified, this property is used to define the locale of the template.
Value Type Locale String
Default Value Default application locale

11.3.9.4 kinesis.templates.logOutput

Templates can be used to generate complex RVML or text. To aid in the debugging of these blocks, KineticFusion can log the output of a template before further processing. In this way, the developer can see the result of the template execution.
Value Type Boolean
false
The template output is not logged but passed direvctly to KineticFusion to process
true
The template output is logged in addition to being passed to KineticFusion for processing
Default Value false

11.3.10 Tag Library Properties

11.3.10.1 kinesis.xml.tagLibraryConfigFile

KineticFusion is able to process RVML documents that include XML tags from namespaces other than the default RVML namespace. This enables developers to create handlers to perform application-specific functionality that may not be straightforward in standard RVMl, or to support other XML dialects embedded inside an RVML document. Handlers for a single namespace are generally packaged into a single location or jar, and the namespace and factory class for the namespace defined in the Tag Libraries configuration file. This property defines the location of the configuration file to use to resolve external tag libraries.
Value Type String representing a single file
Default Value None