Table of Contents

1 KineticFusion Overview 1.1 KineticFusion Features 1.1.1 ActionScript Features 1.1.2 SWC Features 1.1.3 Vector Shape Features 1.1.4 Media Features 1.1.5 Animation Features 1.1.6 Extensibility Features 1.1.7 GUI Features 1.1.8 General Features 1.2 RVML Representation 2 Before You Start 2.1 Set your Class Paths 2.2 Set your SWC Component Paths 2.3 Set Slash Syntax Support 2.4 Set ActionScript Logging Options 3 Quick Start Guide 3.1 ActionScript 2.0 Class Analysis 3.1.1 Configure error and warning messages 3.1.2 Specify Additional Class Metadata 3.2 Creating an SWF Movie 3.2.1 Creating RVML Document by Decompiling 3.2.2 Creating New RVML Documents 3.2.3 Building the SWF Exclude classes Include Classes Class Reporting 3.3 Decompiling SWF Movies 4 Running KineticFusion 4.1 The Java Environment 4.1.1 The Java Runtime Environment (JRE) 4.1.2 The Java Development Kit (JDK) 4.1.3 Checking Your Java Version For Windows Users 4.1.4 Java Application Execution 4.1.5 Java Application Structure 4.1.6 Running a Java Application Java and Application Properties Class Path Background Information Setting Configuration Options on the Command Line Non-Standard Options Application Main Class Application Options 4.2 Running the KineticFusion Application 4.2.1 Using the Predefined Windows Binary 4.2.2 Running the KineticFusion JAR 4.2.3 Using a batch file or shell script 4.2.4 KineticFusion Options Command-Line Mode Supported Options Extra Windows option GUI mode Command line options 4.3 Using KineticFusion with Ant 5 Using The Server Component 5.1 Processing Documents Using the Server API 5.1.1 Compiling an RVML Document The RVML Input Document Specification The SWF Output Document Specification The Returned Results 5.2 Processing SWF Movies 5.2.1 The SWF Input Document Specification 5.2.2 The RVML Output Document Specification Outputting RVML to a Text Stream Outputting RVML to a SAX Handler Defining Repository Parameters Defining Your Own Resource Repository 5.3 Analyzing ActionScript Classes 5.4 Generating RVML SAX Events 5.4.1 Using the Server SAX Handler 5.5 Configuring Logging 5.5.1 Capturing Text Output Using a LoggingAppender Using The LogEventAppender Enabling the Console 5.5.2 Logging ActionScript Messages 5.6 Configuring the Server Component 5.6.1 Configuration Sources 5.6.2 The Configuration Manager 5.6.3 Working With Configuration Properties Reading The Value of a Property Setting Property Values Adding Change Listeners PropertyType SubTypes 5.6.4 Updating Properties in Bulk 5.6.5 Setting ActionScript Warning Levels 5.7 KineticFusion API Properties Summary 5.8 KineticFusion Server API Documentation 6 KineticFusion Graphical User Interface 6.1 File Explorer 6.1.1 Processing RVML files 6.1.2 Processing SWF files 6.1.3 Extracting SWC class hierarchies 6.1.4 TrueType Font Processing 6.1.5 Analyzing AS2.0 classes 6.2 Class Analyzer 6.2.1 Defining Class Paths 6.2.2 Selecting Classes 6.2.3 Analyzing Classes 6.3 The output Tabs 6.3.1 The console tab 6.3.2 The ActionScript Warnings Tab 6.4 Bookmarking Locations 6.4.1 The BookMark Menu 6.4.2 Bookmarking Folders From File Explorer 6.4.3 Managing Bookmarks 6.4.4 Bookmarks in the File Chooser Bookmarking Folders from File Chooser Using Bookmarks inside a File Chooser 6.5 Menu Options 6.5.1 KineticFusion Menu Bar File Menu Edit Menu View Menu Classes Menu Run Menu Help Menu 6.6 Automatically saved settings 6.6.1 Clearing saved settings 7 SWF Movie Concepts 7.1 Vector Symbols 7.2 'Tweened' Symbols 7.3 Text And Fonts 7.4 Resources 7.5 Button Symbols 7.6 Movie Clips 7.7 Scripting 7.8 Timeline 7.8.1 Stage 7.8.2 Frames 7.9 Importing and Exporting Symbols 7.9.1 Exporting Symbols 7.9.2 Import Symbols 7.10 SWC Components 8 Working With RVML Documents 8.1 RVML User Guide 8.1.1 Defining resources External Resources Images Sounds Video Fonts TrueType Fonts Resource Repositories File Repository Absolute File Repository URL Repository System Font Repository 8.1.2 RVML Symbols Shape ImageShape MorphShape Button MovieClip EditField and Text Symbols 8.1.3 KineticFusion Text Handling Features Font Overview Font Representation in RVML Using Previously Decompiled Fonts Using TrueType Fonts Using System Fonts Using Explicit Font Definitions KineticFusion Text Symbols EditField Element Text Element Browsing Font Resources Modifying Text Symbols 8.1.4 Displaying Symbols and Animations 8.1.5 Adding scripting 8.1.6 Working With SWC Components Main Component Support Features Summary of SWC Component Configuration Options kinesis.components.path kinesis.components.resolve kinesis.components.logMissingAssets kinesis.components.ignoreAssets Adding SWC Components <Components> element <Component> element Referencing Component classes SWC Component Examples 8.2 Importing and Exporting Symbols 8.2.1 Exporting Symbols 8.2.2 Importing Symbols 8.3 Creating RVML From Existing SWF Movies 8.3.1 The RVML File Document-Oriented Configuration Options RVML-Oriented Configuration Options 8.3.2 Storing Resources Default Resource Repository 8.3.3 Decompiling ActionScript Decompile as ActionScript 1.0 Extracting ActionScript 2.0 Classes Excluding Known Classes 8.3.4 Decompiling SWC components 8.4 Putting it all Together 8.4.1 DataSources 8.4.2 ActionScriptSettings 8.4.3 Repository 8.4.4 ImportSymbols 8.4.5 Components 8.4.6 Definitions 8.4.7 ExportSymbols 8.4.8 InitClipActions 8.4.9 Timeline 8.5 Building the SWF Movie 8.6 Automating the Build Process 8.6.1 Use the command line arguments 8.6.2 Use Ant Running KineticFusion in the Ant JVM Running KineticFusion in an External JVM 9 Working with ActionScript 9.1 Embedding ActionScript 9.2 Referencing External ActionScript 9.2.1 Using RVML 'src' Attribute 9.2.2 Using '#include' directive 9.2.3 Using ActionScript 2.0 Classes 9.3 General ActionScript Configuration options 9.4 Working with ActionScript 1.0 9.4.1 Synthetic Functions __KFExtends( class, parentClass) __KFImplements(class, parentInterface, ...) __KFCasts( class, argument) ActionScript 1.0 Alternatives 9.5 Working with ActionScript 2.0 9.5.1 ActionScript Classes Class Structure Class ID Implementation Methods Implementation Fields Implementation Properties The 'set' Method The 'get' Method Implementation Locating a class User Class Path System Class Path Intrinsic Classes Representing ActionScript 1.0 Classes 9.5.2 Integrating Classes into RVML Including unreferenced classes Excluding referenced classes Configuration options Class Path Options Class Caching Options Trace Statement Options Class Property Options Class Logging options 9.5.3 Error Configuration Error Configuration Levels Error IDs Modifying the severity of an Error ID 9.5.4 Using the Class Compiler Analyzing from the command line Analyzing using the GUI Class Caching Rebuilding Class Hierarchy 9.5.5 Augmenting Class definitions with Metadata What is a Javadoc comment? Supported KineticFusion Tags The Abstract tag Abstract Classes Abstract Methods The Final tag Final Classes Final Fields Final Methods Final Properties The Const Tag Constant Fields The Signature Tag The Mixin Tag 9.5.6 Trace Statement Processing Trace Statement Removal Trace Statement Replacement Tracing Alternatives 10 RVML Reference 10.1 RVML Reference Documentation (Frames) 10.2 RVML Reference Documentation (Printable) 10.3 RVML Examples 10.4 Constructing Dynamic RVML Content 10.4.1 Introduction to the Data Model 10.4.2 External DataSource Types Java Property files Specifying non-string types XML Documents Using XPath User-defined JavaBeans Required constructor Passing initialization parameters Accessing properties Calling methods 10.4.3 The Global Data Source Defining Global Variables Overriding on the Command Line 10.4.4 Predefined Model Variables movie Variable Math Variable store Variable Using Attribute Expression Language Extensions Using Template Extensions 10.4.5 Dynamic RVML Examples Simple Example Using Command Line Parameters Simple Example Using XML Data Source 10.5 FreeMarker Documentation 10.6 Extending RVML 10.6.1 XML Processing Architecture 10.6.2 How Does RVML Processing Work? 10.6.3 Anatomy of an RVML SAX Handler The RVMLSaxContextType Context Object The RVMLHandlerAdapter class The Lifecycle of The ElementHandler Hierarchy Resetable Interface Attribute Processors 10.6.4 Introduction to RVML Tag Libraries Tag Library Configuration Tag Library Factory Class Persisting an RVML SAX Handler 10.6.5 Example of User-Defined Tag Libraries Using External Tag Libraries in RVML Adding Library Support to KineticFusion Creating An External Tag Library Creating The Factory Class Outlining The Tag Handler Adding a Single Child Handler for 'Event' Element Implement EventProcessorType in ComponentHandler Handle Component Initialization Parameters Adding the Component to the Timeline 10.7 KineticFusion API Documentation 11 Configuring KineticFusion 11.1 Introduction to Configuration 11.1.1 Command-line Properties 11.1.2 Property Files 11.1.3 Property Value Precedence 11.2 KineticFusion Properties Summary 11.2.1 General Properties 11.2.2 General Repository properties Image Resource Properties 11.2.3 RVML Output Properties 11.2.4 SWF Output Properties 11.2.5 Logging Properties 11.2.6 ActionScript Properties ActionScript Parsing Properties ActionScript Code Generation Properties 11.2.7 Component Properties 11.2.8 Datasource Properties 11.2.9 Template Properties 11.2.10 Tag Library Properties 11.3 KineticFusion Properties Details 11.3.1 General Properties kinesis.preload 11.3.2 General Repository properties kinesis.repository.isRelative kinesis.repository.overwrite kinesis.repository.relativePrefix kinesis.repository.systemFontPath kinesis.repository.defaultSystemFont Image Resource Properties kinesis.repository.storeJPEGExternal kinesis.repository.storeLosslessExternal 11.3.3 RVML Output Properties kinesis.xml.dtdLocation kinesis.xml.outputBOM kinesis.xml.outputUTFComment kinesis.swf.inputEncoding kinesis.xml.outputFontDefinitions kinesis.xml.colorFormat kinesis.xml.outputOptionalBounds kinesis.xml.shortPlaceElements kinesis.xml.outputValidatingXML kinesis.actionscript.resolveSWFClasses kinesis.actionscript.storeDuplicateSystemClasses kinesis.actionscript.storeDuplicateUserClasses kinesis.actionscript.unicodeConstants kinesis.xml.unicodeEntities 11.3.4 SWF Output Properties kinesis.swf.outputEncoding kinesis.swf.outputMetadata kinesis.swf.outputSymbolNames kinesis.xml.validate 11.3.5 Logging Properties kinesis.logging.logFile kinesis.logging.appendFile kinesis.logging.logActionScriptToConsole kinesis.logging.format 11.3.6 ActionScript Properties ActionScript Parsing Properties kinesis.actionscript.analyzeScripts kinesis.actionscript.useMetadata kinesis.actionscript.enableWarningMessages kinesis.actionscript.includePath kinesis.actionscript.logCachedClasses kinesis.actionscript.logParsedClasses kinesis.actionscript.packagesAreStable kinesis.actionscript.slashIDSupport kinesis.actionscript.systemClassPath kinesis.actionscript.useCachedClasses kinesis.actionscript.userClassPath ActionScript Code Generation Properties kinesis.actionscript.logLoadedClasses kinesis.actionscript.optimizeFunctions kinesis.actionscript.removeTraceStatements kinesis.actionscript.replaceTraceStatements kinesis.actionscript.setterReturnsValue kinesis.actionscript.warnBlockSize 11.3.7 Component Properties kinesis.components.path kinesis.components.resolve kinesis.components.logMissingAssets kinesis.components.ignoreAssets 11.3.8 Datasource Properties kinesis.datasources.globalLocation kinesis.datasources.globalType 11.3.9 Template Properties kinesis.templates.templateRoot kinesis.templates.defaultEncoding kinesis.templates.defaultLocale kinesis.templates.logOutput 11.3.10 Tag Library Properties kinesis.xml.tagLibraryConfigFile 12 KineticFusion FAQ 12.1 Question List 12.1.1 Installation 12.1.2 Running KineticFusion 12.1.3 Integration 12.1.4 General 12.1.5 RVML 12.1.6 RVML and SVG 12.1.7 SWF 12.1.8 ActionScript 12.1.9 ActionScript 2.0 12.1.10 Fonts 12.1.11 Sounds 12.2 Installation 12.2.1 What is Java and do I need it? 12.2.2 What Version of Java do I need? 12.2.3 Do I need the Java Development kit? 12.2.4 How do I install KineticFusion? 12.2.5 How do I run KineticFusion? 12.3 Running KineticFusion 12.3.1 Can I use my favourite XML parser? 12.3.2 Can I use KineticFusion with {Insert favorite Logging package here}? 12.3.3 How can KineticFusion be configured? 12.4 Integration 12.4.1 Can KineticFusion be run as part of a script? 12.4.2 Can I embed KineticFusion in my JavaServer? 12.4.3 Can we get access to the KineticFusion source code? 12.4.4 Can you provide a library API for creating SWF movies? 12.5 General 12.5.1 Why do you keep taking about 'documents' instead of 'files'? What's the difference? 12.5.2 How are the decompiled symbols named? 12.5.3 Why do some of my SWF images have red parts when there was no red in the original SWF image? 12.6 RVML 12.6.1 Who created RVML? 12.6.2 Is there an RVML namespace? 12.6.3 Can RVML support {favorite feature here}? 12.6.4 Why is UpperCamelCase used for elements and lowerCamelCase used for attributes? 12.6.5 Why is my compiled RVML a different size to the input SWF movie? 12.6.6 Why do I get an error "WARN XMLModelReader - Uncommited symbol already resides at depth: XX"? 12.7 RVML and SVG 12.7.1 What is the difference between RVML and SVG? 12.7.2 Can KineticFusion translate SWF to SVG? 12.7.3 Can KineticFusion translate SVG to SWF? 12.8 SWF 12.8.1 What is SWF? 12.8.2 Do you provide information on the SWF format? 12.8.3 Is the SWF produced by KineticFusion compatible with that from other major authoring tool creators? 12.8.4 How do I debug an SWF movie? 12.9 ActionScript 12.9.1 What is ActionScript? 12.9.2 What versions of ActionScript does KineticFusion support? 12.9.3 Does KineticFusion support ActionScript Slash notation? 12.9.4 I get errors when decompiling ActionScript? 12.9.5 Who owns the copyright to the decompiled ActionScript? 12.9.6 My ActionScript works fine with Flash MX but generates errors in KineticFusion? 12.9.7 Does KineticFusion support the #include directive? 12.9.8 What is the maximum size of ActionScript code that can be placed in a single tag? 12.10 ActionScript 2.0 12.10.1 Why is there a separate System class path? 12.10.2 My Macromedia classes still generate errors? 12.10.3 So many error messages - how can I turn them off? 12.10.4 Can I use KineticFusion as a Class Analyzer without writing RVML? 12.10.5 How does KineticFusion resolve dependencies? 12.10.6 How can I check that all dependencies are included in analysis and output? 12.10.7 Can I include dynamic classes in my SWF i.e. those to which no explicit reference is made in ActionScript? 12.10.8 I've changed a class on which another class depends, however KineticFusion is still using the cached copy? 12.10.9 Why doesn't KineticFusion use a persistent class cache? 12.10.10 Does KineticFusion support Ant tasks? 12.10.11 I know my SWFs will be loaded into movies that already have the required classes. Can I prevent these classes from being output for a particular SWF movie? 12.10.12 What is the maximum size of an ActionScript 2.0 class? 12.10.13 I get the following message: Error processing class path - Too many non-as files on path: <Some Path >. What does this mean? 12.11 Fonts 12.11.1 Can Kinesis Software supply fonts for use with KineticFusion? 12.11.2 Can existing SWF fonts be used when authoring with RVML? 12.12 Sounds 12.12.1 Why does my MP3 sound play at a lower pitch when added to an SWF? 12.12.2 Does KineticFusion support WAV or other raw sound formats? 12.12.3 Why does KineticFusion tell me there are multiple sound streams in an SWF? 13 KineticFusion Change History 13.1 KineticFusion Changes Since KineticFusion 2.0 13.1.1 RVML Extensions 13.1.2 ActionScript Metadata Intrinsic Classes Code Generation ActionScript 2.0 Analysis Tracing 13.1.3 RVML Output 13.1.4 Resources Fonts 13.1.5 GUI ActionScript Processing Bookmarks Splash Screen 13.1.6 Configuration 13.1.7 Execution 13.1.8 Installation 13.1.9 Server 13.1.10 Documentation 13.2 Change Log 13.2.1 Release 3.1.0b4 (09 July 2006) Bug Fixes 13.2.2 Release 3.1.0b2 (16 January 2006) Bug Fixes 13.2.3 Release 3.1.0 (Unreleased) Added or changed features Bug Fixes 13.2.4 Release 3.0.2 (20 November 2005) Bug Fixes 13.2.5 Release 3.0.1 (24 October 2005) Bug Fixes 13.2.6 Release 3.0.0 (10 October 2005) Added or changed features Documentation Bug Fixes 13.2.7 Release 3.0.0b10 (13 September 2005) Added or changed features Documentation Bug Fixes 13.2.8 Release 3.0.0b9 (05 September 2005) Added or changed features Documentation Bug Fixes 13.2.9 Release 3.0.0b8 (04 August 2005) Added or changed features Bug Fixes 13.2.10 Release 3.0.0b7 (15 July 2005) Added or changed features Bug Fixes 13.2.11 Release 3.0.0b6 (22 June 2005) Added or changed features Bug Fixes 13.2.12 Release 3.0.0b5 (limited) Added or changed features Bug Fixes 13.2.13 Release 3.0.0b4 (limited) Added or changed features Bug Fixes 13.2.14 Release 3.0.0b3 (limited) Added or changed features Bug Fixes 13.2.15 Release 3.0.0b2 (limited) Added or changed features Bug Fixes 13.2.16 Release 3.0.0b1 (limited) Added or changed features 13.2.17 Release 2.0.08 (04 April 2005) Added or changed features Bug Fixes 13.2.18 Release 2.0.07 (07 March 2005) Added or changed features Bug Fixes 13.2.19 Release 2.0.06 (18 February 2005) Added or changed features Documentation Bug Fixes 13.2.20 Release 2.0.05 (13 December 2004) Added or changed features Bug Fixes 13.2.21 Release 2.0.04 (15 November 2004) Added or changed features Bug Fixes 13.2.22 Release 2.0.03 (24 September 2004) Added or changed features Bug Fixes 13.2.23 Release 2.0.02 (28 August 2004) Bug Fixes 13.2.24 Release 2.0.01 (10 August 2004) Added or changed features Bug Fixes 13.2.25 Release 2.0 (26 July 2004) Added or changed features Bug Fixes Documentation 13.2.26 Release 1.0.5 Added or changed features Bug Fixes 13.2.27 Release 1.0.4 Added or changed features Bug Fixes Documentation 13.2.28 Release 1.0.3 Added or changed features Bug Fixes Documentation 13.2.29 Release 1.0.2 General