flex-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From erikdebr...@apache.org
Subject [2/6] git commit: [flex-asjs] [refs/heads/develop] - PlayerGlobalToJS AIR app
Date Fri, 31 Oct 2014 16:49:16 GMT
PlayerGlobalToJS AIR app

AIR application to create JS stubs from 'playerglobal.swc' classes and provide implementations of selected class members in JS through 'shadow' interfaces.

Signed-off-by: Erik de Bruin <erik@ixsoftware.nl>


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/83c26c9d
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/83c26c9d
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/83c26c9d

Branch: refs/heads/develop
Commit: 83c26c9d00a0ffd115abebf29bf35c0a8f777999
Parents: 911f644
Author: Erik de Bruin <erik@ixsoftware.nl>
Authored: Fri Oct 31 17:00:09 2014 +0100
Committer: Erik de Bruin <erik@ixsoftware.nl>
Committed: Fri Oct 31 17:02:00 2014 +0100

----------------------------------------------------------------------
 .../src/PlayerGlobalToJS-app.xml                | 232 +++++++
 .../PlayerGlobalToJS/src/PlayerGlobalToJS.mxml  | 660 +++++++++++++++++++
 .../src/assets/vf2js/display/DisplayObject.js   | 173 +++++
 .../vf2js/display/DisplayObjectContainer.js     | 110 ++++
 .../assets/vf2js/display/InteractiveObject.js   |  33 +
 .../src/assets/vf2js/display/LoaderInfo.js      | 125 ++++
 .../src/assets/vf2js/display/MovieClip.js       | 115 ++++
 .../src/assets/vf2js/display/Sprite.js          |  33 +
 .../src/assets/vf2js/display/Stage.js           | 210 ++++++
 .../src/assets/vf2js/events/Event.js            | 136 ++++
 .../src/assets/vf2js/events/EventDispatcher.js  | 154 +++++
 .../src/assets/vf2js/events/ProgressEvent.js    |  75 +++
 .../src/assets/vf2js/events/TimerEvent.js       |  72 ++
 .../assets/vf2js/system/ApplicationDomain.js    |  77 +++
 .../src/assets/vf2js/system/Capabilities.js     |  98 +++
 .../src/assets/vf2js/utils/Timer.js             | 182 +++++
 .../assets/vf2js/utils/getDefinitionByName.js   |  53 ++
 .../utils/PlayerGlobalToJS/src/nl/ixms/Utils.as |  44 ++
 .../src/nl/ixms/enums/MemberType.as             |  62 ++
 .../PlayerGlobalToJS/src/nl/ixms/vo/Clazz.as    | 489 ++++++++++++++
 .../src/nl/ixms/vo/ClazzMemberTypeLists.as      |  11 +
 .../PlayerGlobalToJS/src/nl/ixms/vo/JSDoc.as    | 111 ++++
 .../PlayerGlobalToJS/src/shadowInterfaces.as    |  16 +
 .../src/vf2js/display/IDisplayObject.as         |  27 +
 .../vf2js/display/IDisplayObjectContainer.as    |  12 +
 .../src/vf2js/display/IInteractiveObject.as     |   8 +
 .../src/vf2js/display/ILoaderInfo.as            |  21 +
 .../src/vf2js/display/IMovieClip.as             |  17 +
 .../src/vf2js/display/ISprite.as                |   8 +
 .../src/vf2js/display/IStage.as                 |  26 +
 .../PlayerGlobalToJS/src/vf2js/events/IEvent.as |  15 +
 .../src/vf2js/events/IEventDispatcher.as        |  15 +
 .../src/vf2js/events/IProgressEvent.as          |   9 +
 .../src/vf2js/events/ITimerEvent.as             |   9 +
 .../src/vf2js/system/IApplicationDomain.as      |  10 +
 .../src/vf2js/system/ICapabilities.as           |  17 +
 .../PlayerGlobalToJS/src/vf2js/utils/ITimer.as  |  14 +
 .../src/vf2js/utils/IgetDefinitionByName.as     |   8 +
 38 files changed, 3487 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/83c26c9d/vf2js/utils/PlayerGlobalToJS/src/PlayerGlobalToJS-app.xml
----------------------------------------------------------------------
diff --git a/vf2js/utils/PlayerGlobalToJS/src/PlayerGlobalToJS-app.xml b/vf2js/utils/PlayerGlobalToJS/src/PlayerGlobalToJS-app.xml
new file mode 100644
index 0000000..efd4a3e
--- /dev/null
+++ b/vf2js/utils/PlayerGlobalToJS/src/PlayerGlobalToJS-app.xml
@@ -0,0 +1,232 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<application xmlns="http://ns.adobe.com/air/application/15.0">
+
+<!-- Adobe AIR Application Descriptor File Template.
+
+	Specifies parameters for identifying, installing, and launching AIR applications.
+
+	xmlns - The Adobe AIR namespace: http://ns.adobe.com/air/application/3.1
+			The last segment of the namespace specifies the version 
+			of the AIR runtime required for this application to run.
+			
+	minimumPatchLevel - The minimum patch level of the AIR runtime required to run 
+			the application. Optional.
+-->
+
+	<!-- A universally unique application identifier. Must be unique across all AIR applications.
+	Using a reverse DNS-style name as the id is recommended. (Eg. com.example.ExampleApplication.) Required. -->
+	<id>PlayerGlobalToJS</id>
+
+	<!-- Used as the filename for the application. Required. -->
+	<filename>PlayerGlobalToJS</filename>
+
+	<!-- The name that is displayed in the AIR application installer. 
+	May have multiple values for each language. See samples or xsd schema file. Optional. -->
+	<name>PlayerGlobalToJS</name>
+	
+	<!-- A string value of the format <0-999>.<0-999>.<0-999> that represents application version which can be used to check for application upgrade. 
+	Values can also be 1-part or 2-part. It is not necessary to have a 3-part value.
+	An updated version of application must have a versionNumber value higher than the previous version. Required for namespace >= 2.5 . -->
+	<versionNumber>0.0.1</versionNumber>
+		         
+	<!-- A string value (such as "v1", "2.5", or "Alpha 1") that represents the version of the application, as it should be shown to users. Optional. -->
+	<!-- <versionLabel></versionLabel> -->
+
+	<!-- Description, displayed in the AIR application installer.
+	May have multiple values for each language. See samples or xsd schema file. Optional. -->
+	<!-- <description></description> -->
+
+	<!-- Copyright information. Optional -->
+	<!-- <copyright></copyright> -->
+
+	<!-- Publisher ID. Used if you're updating an application created prior to 1.5.3 -->
+	<!-- <publisherID></publisherID> -->
+
+	<!-- Settings for the application's initial window. Required. -->
+	<initialWindow>
+		<!-- The main SWF or HTML file of the application. Required. -->
+		<!-- Note: In Flash Builder, the SWF reference is set automatically. -->
+		<content>[This value will be overwritten by Flash Builder in the output app.xml]</content>
+		
+		<!-- The title of the main window. Optional. -->
+		<!-- <title></title> -->
+
+		<!-- The type of system chrome to use (either "standard" or "none"). Optional. Default standard. -->
+		<!-- <systemChrome></systemChrome> -->
+
+		<!-- Whether the window is transparent. Only applicable when systemChrome is none. Optional. Default false. -->
+		<!-- <transparent></transparent> -->
+
+		<!-- Whether the window is initially visible. Optional. Default false. -->
+		<!-- <visible></visible> -->
+
+		<!-- Whether the user can minimize the window. Optional. Default true. -->
+		<!-- <minimizable></minimizable> -->
+
+		<!-- Whether the user can maximize the window. Optional. Default true. -->
+		<!-- <maximizable></maximizable> -->
+
+		<!-- Whether the user can resize the window. Optional. Default true. -->
+		<!-- <resizable></resizable> -->
+
+		<!-- The window's initial width in pixels. Optional. -->
+		<!-- <width></width> -->
+
+		<!-- The window's initial height in pixels. Optional. -->
+		<!-- <height></height> -->
+
+		<!-- The window's initial x position. Optional. -->
+		<!-- <x></x> -->
+
+		<!-- The window's initial y position. Optional. -->
+		<!-- <y></y> -->
+
+		<!-- The window's minimum size, specified as a width/height pair in pixels, such as "400 200". Optional. -->
+		<!-- <minSize></minSize> -->
+
+		<!-- The window's initial maximum size, specified as a width/height pair in pixels, such as "1600 1200". Optional. -->
+		<!-- <maxSize></maxSize> -->
+
+        <!-- The initial aspect ratio of the app when launched (either "portrait" or "landscape"). Optional. Mobile only. Default is the natural orientation of the device -->
+
+        <!-- <aspectRatio></aspectRatio> -->
+
+        <!-- Whether the app will begin auto-orienting on launch. Optional. Mobile only. Default false -->
+
+        <!-- <autoOrients></autoOrients> -->
+
+        <!-- Whether the app launches in full screen. Optional. Mobile only. Default false -->
+
+        <!-- <fullScreen></fullScreen> -->
+
+        <!-- The render mode for the app (either auto, cpu, gpu, or direct). Optional. Default auto -->
+
+        <!-- <renderMode></renderMode> -->
+
+		<!-- Whether or not to pan when a soft keyboard is raised or lowered (either "pan" or "none").  Optional.  Defaults "pan." -->
+		<!-- <softKeyboardBehavior></softKeyboardBehavior> -->
+	<autoOrients>false</autoOrients>
+        <fullScreen>false</fullScreen>
+        <visible>false</visible>
+    </initialWindow>
+
+	<!-- We recommend omitting the supportedProfiles element, -->
+	<!-- which in turn permits your application to be deployed to all -->
+	<!-- devices supported by AIR. If you wish to restrict deployment -->
+	<!-- (i.e., to only mobile devices) then add this element and list -->
+	<!-- only the profiles which your application does support. -->
+	<!-- <supportedProfiles>desktop extendedDesktop mobileDevice extendedMobileDevice</supportedProfiles> -->
+
+	<!-- The subpath of the standard default installation location to use. Optional. -->
+	<!-- <installFolder></installFolder> -->
+
+	<!-- The subpath of the Programs menu to use. (Ignored on operating systems without a Programs menu.) Optional. -->
+	<!-- <programMenuFolder></programMenuFolder> -->
+
+	<!-- The icon the system uses for the application. For at least one resolution,
+	specify the path to a PNG file included in the AIR package. Optional. -->
+	<!-- <icon>
+		<image16x16></image16x16>
+		<image32x32></image32x32>
+		<image36x36></image36x36>
+		<image48x48></image48x48>
+		<image57x57></image57x57>
+		<image72x72></image72x72>
+		<image114x114></image114x114>
+		<image128x128></image128x128>
+	</icon> -->
+
+	<!-- Whether the application handles the update when a user double-clicks an update version
+	of the AIR file (true), or the default AIR application installer handles the update (false).
+	Optional. Default false. -->
+	<!-- <customUpdateUI></customUpdateUI> -->
+	
+	<!-- Whether the application can be launched when the user clicks a link in a web browser.
+	Optional. Default false. -->
+	<!-- <allowBrowserInvocation></allowBrowserInvocation> -->
+
+	<!-- Listing of file types for which the application can register. Optional. -->
+	<!-- <fileTypes> -->
+
+		<!-- Defines one file type. Optional. -->
+		<!-- <fileType> -->
+
+			<!-- The name that the system displays for the registered file type. Required. -->
+			<!-- <name></name> -->
+
+			<!-- The extension to register. Required. -->
+			<!-- <extension></extension> -->
+			
+			<!-- The description of the file type. Optional. -->
+			<!-- <description></description> -->
+			
+			<!-- The MIME content type. -->
+			<!-- <contentType></contentType> -->
+			
+			<!-- The icon to display for the file type. Optional. -->
+			<!-- <icon>
+				<image16x16></image16x16>
+				<image32x32></image32x32>
+				<image48x48></image48x48>
+				<image128x128></image128x128>
+			</icon> -->
+			
+		<!-- </fileType> -->
+	<!-- </fileTypes> -->
+
+    <!-- iOS specific capabilities -->
+	<!-- <iPhone> -->
+		<!-- A list of plist key/value pairs to be added to the application Info.plist -->
+		<!-- <InfoAdditions>
+            <![CDATA[
+                <key>UIDeviceFamily</key>
+                <array>
+                    <string>1</string>
+                    <string>2</string>
+                </array>
+                <key>UIStatusBarStyle</key>
+                <string>UIStatusBarStyleBlackOpaque</string>
+                <key>UIRequiresPersistentWiFi</key>
+                <string>YES</string>
+            ]]>
+        </InfoAdditions> -->
+        <!-- A list of plist key/value pairs to be added to the application Entitlements.plist -->
+		<!-- <Entitlements>
+            <![CDATA[
+                <key>keychain-access-groups</key>
+                <array>
+                    <string></string>
+                    <string></string>
+                </array>
+            ]]>
+        </Entitlements> -->
+	<!-- Display Resolution for the app (either "standard" or "high"). Optional. Default "standard" -->
+	<!-- <requestedDisplayResolution></requestedDisplayResolution> -->
+	<!-- </iPhone> -->
+
+	<!-- Specify Android specific tags that get passed to AndroidManifest.xml file. -->
+    <!--<android> -->
+    <!--	<manifestAdditions>
+		<![CDATA[
+			<manifest android:installLocation="auto">
+				<uses-permission android:name="android.permission.INTERNET"/>
+				<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+				<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
+				<uses-feature android:required="true" android:name="android.hardware.touchscreen.multitouch"/>
+				<application android:enabled="true">
+					<activity android:excludeFromRecents="false">
+						<intent-filter>
+							<action android:name="android.intent.action.MAIN"/>
+							<category android:name="android.intent.category.LAUNCHER"/>
+						</intent-filter>
+					</activity>
+				</application>
+            </manifest>
+		]]>
+        </manifestAdditions> -->
+	    <!-- Color depth for the app (either "32bit" or "16bit"). Optional. Default 16bit before namespace 3.0, 32bit after -->
+        <!-- <colorDepth></colorDepth> -->
+    <!-- </android> -->
+	<!-- End of the schema for adding the android specific tags in AndroidManifest.xml file -->
+
+</application>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/83c26c9d/vf2js/utils/PlayerGlobalToJS/src/PlayerGlobalToJS.mxml
----------------------------------------------------------------------
diff --git a/vf2js/utils/PlayerGlobalToJS/src/PlayerGlobalToJS.mxml b/vf2js/utils/PlayerGlobalToJS/src/PlayerGlobalToJS.mxml
new file mode 100755
index 0000000..4b2a97c
--- /dev/null
+++ b/vf2js/utils/PlayerGlobalToJS/src/PlayerGlobalToJS.mxml
@@ -0,0 +1,660 @@
+<?xml version="1.0" encoding="utf-8"?>
+<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
+					   xmlns:s="library://ns.adobe.com/flex/spark"
+					   xmlns:mx="library://ns.adobe.com/flex/mx"
+					   creationComplete="creationCompleteHandler(event)">
+	
+	<fx:Script><![CDATA[
+		
+		import flash.utils.Dictionary;
+		import flash.utils.getQualifiedClassName;
+		
+		import mx.events.FlexEvent;
+		import mx.utils.StringUtil;
+		
+		import nl.ixms.Utils;
+		import nl.ixms.enums.MemberType;
+		import nl.ixms.vo.Clazz;
+		import nl.ixms.vo.JSDoc;
+		
+		import org.as3commons.reflect.Accessor;
+		import org.as3commons.reflect.Constant;
+		import org.as3commons.reflect.Method;
+		import org.as3commons.reflect.Parameter;
+		import org.as3commons.reflect.Type;
+		import org.as3commons.reflect.Variable;
+		
+		include './shadowInterfaces.as';
+		
+		
+		
+		//----------------------------------------------------------------------
+		//
+		//  Constants 
+		//
+		//----------------------------------------------------------------------
+		
+		private const ACTION_UNIMPLEMENTED:String = 
+			'console.log(\'VF2JS Error: call to unimplemented class member ({0})\');';
+		
+		
+		
+		//----------------------------------------------------------------------
+		//
+		//  Properties 
+		//
+		//----------------------------------------------------------------------
+		
+		//--------------------------------------
+		//  catalogXML_ 
+		//--------------------------------------
+		
+		private var catalogXML_:XMLList;
+		
+		//--------------------------------------
+		//  classes_ 
+		//--------------------------------------
+		
+		private var classes_:Dictionary;
+		
+		//--------------------------------------
+		//  functions_ 
+		//--------------------------------------
+		
+		private var functions_:Dictionary;
+		
+		//--------------------------------------
+		//  outputRoot_ 
+		//--------------------------------------
+		
+		private var outputRoot_:File;
+		
+		
+		
+		//----------------------------------------------------------------------
+		//
+		//  Methods 
+		//
+		//----------------------------------------------------------------------
+		
+		//--------------------------------------
+		//  createOutputDirectory 
+		//--------------------------------------
+		
+		private function createOutputDirectory():void {
+			outputRoot_ = 
+				new File(File.applicationDirectory.nativePath).resolvePath(
+					'../out');
+			
+			if (outputRoot_.exists) {
+				outputRoot_.deleteDirectory(true);
+			}
+			
+			outputRoot_.createDirectory();
+
+			File.applicationDirectory.resolvePath('assets/vf2js').copyTo(
+				outputRoot_.resolvePath('vf2js')); 
+		}
+		
+		//--------------------------------------
+		//  creationCompleteHandler 
+		//--------------------------------------
+		
+		private function creationCompleteHandler(event:FlexEvent):void {
+			var clazz:Clazz, 
+			    clsAccessor:Accessor, 
+				clsConstant:Constant, 
+				clsMemberName:MemberType, 
+				clsMemberTypeNames:Array,
+				clsMemberType:String, 
+				clsMemberValue:Object, 
+				clsField:Object,
+				clsMembers:Dictionary,
+				clsType:Type, 
+				clsVariable:Variable,
+				funczion:Object,
+				i:int,
+				j:int, 
+				key:String, 
+				m:int, 
+				n:int, 
+				p:int, 
+				parameter:Parameter,
+				parameters:Array,
+				parameterNames:Array,
+				q:int;
+			
+				clsMemberTypeNames = [ 
+					MemberType.STATIC_CONSTANT,
+					MemberType.STATIC_VARIABLE,
+					MemberType.STATIC_PROPERTY,
+					MemberType.STATIC_METHOD,
+					MemberType.CONSTANT,
+					MemberType.VARIABLE,
+					MemberType.PROPERTY,
+					MemberType.METHOD ];
+			
+			createOutputDirectory();
+			
+			readCatalogXML();
+			
+			parseClasses();
+			
+			// VERY special case
+			functions_['mx.core.mx_internal'] = 'mx.core.mx_internal';
+			
+			for (key in functions_) {
+				clazz = new Clazz(null);
+				
+				clazz.qName = key;
+				
+				if (key.split('.').length > 1) {
+					clazz.name = clazz.qName.substring(
+						clazz.qName.lastIndexOf('.') + 1, clazz.qName.length);
+				} else {
+					continue;
+				}
+				
+				clazz.startOutput();
+				
+				writeClassFile(clazz);
+			}
+
+			for (key in classes_) {
+				clazz = Clazz(classes_[key]);
+				
+				clsType = clazz.type;
+				if (clsType && 
+					clsType.fullName && 
+					clsType.fullName !== 'Object') {
+					
+					clsMembers = parseClassMembers(clazz);
+					
+					clazz.startOutput();
+					
+					// Member stubs
+					for (var count:int = 0, total:int = clsMemberTypeNames.length; count < total; count++) {
+						clsMemberName = clsMemberTypeNames[count];
+						if (clsMembers[clsMemberName].length > 0) {
+							
+							clazz.addMajorBlockComment(
+								clsMemberName.toString().toUpperCase().replace('_', ' '));
+							
+							for (j = 0, m = clsMembers[clsMemberName].length; j < m; j++) {
+								if (clsMembers[clsMemberName][j] is Constant ||
+									clsMembers[clsMemberName][j] is Variable) {
+									clsField = clsMembers[clsMemberName][j];
+									clsMemberType = 
+										Utils.parseType(flash.utils.getQualifiedClassName(
+											clsField.type.clazz));
+									
+									clazz.output += JSDoc.emitJSDoc(
+										JSDoc.FIELD,
+										clsField.name,
+										clsMemberType);
+									
+									clazz.output += 
+										clazz.qName + 
+										'.' + 
+										((clsField.isStatic) ? '' : 'prototype.') +
+										clsField.name;
+									
+									clsMemberValue = clsField.getValue();
+									if (clsMemberValue) {
+										clazz.output += ' = ';
+
+										if (clsMemberType === 'Array') {
+											clazz.output += '[';
+											for (var k:int = 0, l:int = clsMemberValue.length; k < l; k++) {
+												if (k > 0) {
+													clazz.output += ', ';
+												}
+												clazz.output += '\'' + clsMemberValue[k] + '\'';
+											}
+											clazz.output += ']';
+										} else {
+											clazz.output += 
+												((clsMemberType === 'string') ? '\'' : '') +
+												clsMemberValue +
+												((clsMemberType === 'string') ? '\'' : '');
+										}
+									}
+									
+									clazz.output += Clazz.MEMBER_SEPARATOR;
+								} else if (clsMembers[clsMemberName][j] is Accessor) {
+									clsField = clsMembers[clsMemberName][j];
+									clsMemberType = 
+										Utils.parseType(flash.utils.getQualifiedClassName(
+											clsField.type.clazz));
+									
+									clazz.output += JSDoc.emitJSDoc(
+										JSDoc.METHOD,
+										clsField.name,
+										'', clsMemberType);
+									
+									clazz.output += 
+										clazz.qName + 
+										'.' + 
+										((clsField.isStatic) ? '' : 'prototype.') +
+										'get_' + clsField.name + ' = ' +
+										'function() {\n' +
+										'  ' + getImplementation(
+											clazz, clsField, 'get_', true) + '\n' +
+										'}';
+
+									if (Accessor(clsField).writeable) {
+										clazz.output += Clazz.MEMBER_SEPARATOR;
+										
+										parameter = new Parameter(null, 0);
+
+										clazz.output += JSDoc.emitJSDoc(
+											JSDoc.FIELD,
+											clsField.name);
+										
+										clazz.output += 
+											clazz.qName + 
+											'.' + 
+											((clsField.isStatic) ? '' : 'prototype.') +
+											'set_' + clsField.name + ' = ' +
+											'function(value) {\n' +
+											'  ' + getImplementation(
+												clazz, clsField, 'set_') + '\n' +
+											'}';
+									}
+									
+									/*
+									clazz.output += JSDoc.emitJSDoc(
+										JSDoc.FIELD,
+										clsField.name,
+										clsMemberType);
+									
+									clazz.output += 
+										clazz.qName + 
+										'.' + 
+										((clsField.isStatic) ? '' : 'prototype.') +
+										clsField.name +
+										';\n\n';
+									
+									clazz.output += 
+										'Object.defineProperty(' + clazz.qName + ((clsField.isStatic) ? '' : '.prototype') + ', \'' + clsField.name + '\', {\n' +
+										'  get: function() {\n' +
+										'    ' + StringUtil.substitute(ACTION_UNIMPLEMENTED, [clazz.qName + '::' + clsField.name]) + '\n' +
+										'  }';
+									if (Accessor(clsField).writeable) {
+										clazz.output += 
+											',\n  set: function(value) {\n' +
+											'    ' + StringUtil.substitute(ACTION_UNIMPLEMENTED, [clazz.qName + '::' + clsField.name]) + '\n' +
+											'  }';
+									}
+									clazz.output += 
+										'\n})';
+									*/
+									
+									clazz.output += Clazz.MEMBER_SEPARATOR;
+								} else if (clsMembers[clsMemberName][j] is Method) {
+									clsField = clsMembers[clsMemberName][j];
+
+									parameters = Method(clsField).parameters;
+									
+									parameterNames = [];
+									for (i = 0, n = parameters.length; i < n; i++) {
+										parameterNames.push(((parameters[i].isOptional) ? 'opt_' : '') + 'arg' + i);
+									}
+
+									var returnType:String = Utils.parseType(Method(clsField).returnType.fullName);
+									if (returnType === 'void') {
+										returnType = '';
+									}
+									
+									clazz.output += JSDoc.emitJSDoc(
+										JSDoc.METHOD, 
+										clsField.name, 
+										parameters,
+									    returnType);
+									
+									clazz.output += 
+										clazz.qName + 
+										'.' + 
+										((clsField.isStatic) ? '' : 'prototype.') +
+										clsField.name +
+										' = function(' +
+										parameterNames.join(', ') + 
+										') {';
+										if (!clazz.type.isInterface) {
+											clazz.output += '\n  ' + getImplementation(
+												clazz, clsField, '', 
+												(returnType !== ''),
+												parameterNames.join(', ')) + '\n';
+										}
+										clazz.output += '}';
+									
+									clazz.output += Clazz.MEMBER_SEPARATOR;
+								}
+							}
+						}
+					}
+					
+					writeClassFile(clazz);
+				}
+			}
+			
+			this.exit();
+		}
+		
+		//--------------------------------------
+		//  getImplementation
+		//--------------------------------------
+		
+		private function getImplementation(clazz:Clazz, 
+										   clsField:Object, 
+										   prefix:String = '', 
+										   returns:Boolean = false,
+										   parameters:String = ''):String {
+			var compositeClazzMembers:Array,
+				hasImplementation:Boolean = false,
+				i:int,
+				isStatic:Boolean,
+				implementation:String,
+				memberName:String;
+
+			if (clazz.compositeClazz) {
+				if (clsField is Accessor) {
+					memberName = Accessor(clsField).name;
+					isStatic = Accessor(clsField).isStatic;
+					
+					compositeClazzMembers = clazz.compositeClazz.accessors; 
+					
+					for (i = compositeClazzMembers.length - 1; i > -1; i--) {
+						if (compositeClazzMembers[i].name === memberName) {
+							hasImplementation = true;
+							
+							break;
+						}
+					}
+					
+					if (hasImplementation) {
+						implementation = ((returns) ? 'return ' : '') + 
+							((isStatic) ? clazz.compositeClazzName + '.' : 'this.$_implementation.') + 
+							prefix + memberName + '();';
+					} else {
+						implementation = 
+							StringUtil.substitute(ACTION_UNIMPLEMENTED, 
+								[clazz.qName + '::' + prefix + memberName]);
+					}
+				} else if (clsField is Method) {
+					memberName = Method(clsField).name;
+					isStatic = Method(clsField).isStatic;
+					
+					compositeClazzMembers = clazz.compositeClazz.methods; 
+					
+					for (i = compositeClazzMembers.length - 1; i > -1; i--) {
+						if (compositeClazzMembers[i].name === memberName) {
+							hasImplementation = true;
+							
+							break;
+						}
+					}
+					
+					if (hasImplementation) {
+						implementation = ((returns) ? 'return ' : '') + 
+							((isStatic) ? clazz.compositeClazzName + '.' : 'this.$_implementation.') + 
+							memberName + '(' + parameters + ');';
+					} else {
+						implementation = 
+							StringUtil.substitute(ACTION_UNIMPLEMENTED, 
+								[clazz.qName + '::' + memberName]);
+						
+						if (returns) {
+							implementation += 
+								'\n\n  return null; // placeholder to appease gjslint';
+						}
+					}
+				}
+			}
+			
+			return implementation;
+		}
+		
+		//--------------------------------------
+		//  parseClassMembers
+		//--------------------------------------
+		
+		private function parseClassMembers(clazz:Clazz):Dictionary {
+			var clsField:Object, 
+				clsFieldsArray:Array, 
+				clsMembers:Dictionary, 
+			    clsMethod:Method, 
+				clsMethodsArray:Array, 
+				clsType:Type, 
+				i:int, 
+				n:int;
+			
+			clsMembers = new Dictionary();
+			clsMembers[MemberType.STATIC_CONSTANT] = [];
+			clsMembers[MemberType.STATIC_VARIABLE] = [];
+			clsMembers[MemberType.STATIC_PROPERTY] = [];
+			clsMembers[MemberType.STATIC_METHOD] = [];
+			clsMembers[MemberType.CONSTANT] = [];
+			clsMembers[MemberType.VARIABLE] = [];
+			clsMembers[MemberType.PROPERTY] = [];
+			clsMembers[MemberType.METHOD] = [];
+			
+			clsType = clazz.type;
+			
+			clsFieldsArray = clsType.fields;
+			for (i = 0, n = clsFieldsArray.length; i < n; i++) {
+				clsField = clsFieldsArray[i];
+				if (clsField.declaringType.name === clsType.name) {
+					if (clsField is Constant && clsField.name !== 'length') {
+						if (clsField.isStatic) {
+							clsMembers[MemberType.STATIC_CONSTANT].push(clsField);
+						} else {
+							clsMembers[MemberType.CONSTANT].push(clsField);
+						}
+					} else if (clsField is Variable) {
+						if (clsField.isStatic) {
+							clsMembers[MemberType.STATIC_VARIABLE].push(clsField);
+						} else {
+							clsMembers[MemberType.VARIABLE].push(clsField);
+						}
+					} else if (clsField is Accessor) {
+						if (clsField.isStatic) {
+							clsMembers[MemberType.STATIC_PROPERTY].push(clsField);
+						} else {
+							clsMembers[MemberType.PROPERTY].push(clsField);
+						}
+					}
+				}
+			}
+			
+			clsMethodsArray = clsType.methods;
+			for (i = 0, n = clsMethodsArray.length; i < n; i++) {
+				clsMethod = clsMethodsArray[i];
+				if (clsMethod.declaringType.name === clsType.name) {
+					if (clsMethod.isStatic) {
+						clsMembers[MemberType.STATIC_METHOD].push(clsMethod);
+					} else {
+						clsMembers[MemberType.METHOD].push(clsMethod);
+					}
+				}
+			}
+			
+			return clsMembers;
+		}
+			
+		//--------------------------------------
+		//  parseClasses
+		//--------------------------------------
+		
+		private function parseClasses():void {
+			var addClazz:Function, className:String, classType:Type, 
+			clazz:Clazz, exclude:Boolean, excludeFunctionPackageArr:Array, 
+			excludeTopLevelClassArr:Array, pkg:String, pkgArr:Array, i:int, 
+			interfaceName:String, interfaceNamesArray:Array, interfaceType:Type, 
+			isClazz:Function, j:int, jsEquivArr:Array, m:int, n:int, 
+			namespaceArray:Array, superClassName:String, 
+			superClassNamesArray:Array, superClassType:Type;
+			
+			addClazz = function (name:String, type:Type):void {
+				var result:Clazz;
+				
+				result = new Clazz(type);
+				result.name = type.name;
+				result.qName = Utils.cleanClassQName(type.fullName);
+
+				if (excludeTopLevelClassArr.indexOf(name) === -1) {
+					classes_[name] = result;
+				}
+			}
+				
+			isClazz = function (clazzName:String):Boolean {
+				var clazzNameArr:Array, firstCharCode:Number;
+				
+				clazzNameArr = clazzName.split('.');
+				if (clazzNameArr && clazzNameArr.length > 0) {
+					clazzName = clazzNameArr[clazzNameArr.length - 1];
+				}
+				firstCharCode = clazzName.charCodeAt(0);
+				
+				return firstCharCode >= 65  && firstCharCode <= 90;
+			}
+				
+			// ToDo (erikdebruin): these classes have an JS counterpart, and we
+			//                     want to only add those members that are not
+			//                     in the JS implementation, or override those
+			//                     with a different implementation.
+			excludeTopLevelClassArr = [
+				'Array', 'Boolean', 'Date',/* 'Error',*/ 'EvalError', 'Function', 
+				'JSON', 'Math', 'Number', 'QName', 'RangeError', 
+				'ReferenceError', 'RegExp', 'String', 'SyntaxError', 
+				'TypeError' ];
+			
+			excludeFunctionPackageArr = [
+				'avmplus', 'avm2.intrinsics.memory', 'bugzilla',
+				'flash.debugger', 'flash.media', 'flash.profiler', 
+				'flash.sampler', 'watson' ];
+			
+			jsEquivArr = [
+				'decodeURI', 'decodeURIComponent', 'encodeURI', 
+				'encodeURIComponent', 'escape', 'isFinite', 
+				'isNaN', 'parseFloat', 'parseInt', 'undefined', 'unescape' ];
+			
+			classes_ = new Dictionary();
+
+			functions_ = new Dictionary();
+			
+			for (i = 0, n = catalogXML_.length() - 1; i < n; i++) {
+				className = Utils.cleanClassQName(catalogXML_[i].@id);
+				try
+				{
+					if (!classes_[className]) {
+						classType = Type.forName(className);
+						if (classType && classType.fullName) {
+							namespaceArray = className.split('.');
+							if (namespaceArray.length === 1 ||
+								namespaceArray[0] === 'flash') {
+								
+								addClazz(className, classType);
+
+								superClassNamesArray = classType.extendsClasses;
+								m = superClassNamesArray.length;
+								for (j = 0; j < m; j++) {
+									superClassName = Utils.cleanClassQName(
+										superClassNamesArray[j]);
+									if (!classes_[superClassName]) {
+										superClassType = Type.forName(
+											superClassName);
+										if (superClassType) {
+											addClazz(superClassName, 
+												superClassType);
+										}
+									}
+								}
+								
+								// fetch class' interfaces
+								interfaceNamesArray = classType.interfaces;
+								m = interfaceNamesArray.length;
+								for (j = 0; j < m; j++) {
+									interfaceName = interfaceNamesArray[j];
+									if (!classes_[interfaceName]) {
+										interfaceType = Type.forName(
+											interfaceName);
+										if (interfaceType) {
+											addClazz(interfaceName, 
+												interfaceType);
+										}
+									}
+								}
+							}
+						} else { // "function Classes"
+							pkgArr = className.split('.');
+							if (pkgArr.length > 1) {
+								pkgArr.pop();
+							}
+							pkg = pkgArr.join('.');
+							
+							exclude = pkg.charAt(0) === '_' || 
+								excludeFunctionPackageArr.indexOf(pkg) > -1 || 
+								jsEquivArr.indexOf(pkg) > -1;
+							
+							if (!isClazz(className) && !exclude) {
+								functions_[className] = className;
+							}
+						}
+					}
+				}
+				catch (err:Error) { /* eat Type.forName() exceptions */ }
+			}
+		}
+		
+		//--------------------------------------
+		//  readCatalogXML
+		//--------------------------------------
+		
+		private function readCatalogXML():void {
+			var file:File, stream:FileStream, xml:XML;
+			
+			file = File.applicationDirectory.resolvePath(
+				'assets/catalog_15.xml');
+			
+			stream = new FileStream();
+			stream.open(file, FileMode.READ);
+			xml = new XML(
+				stream.readUTFBytes(stream.bytesAvailable).replace(
+					/xmlns=".*"/, ""));
+			stream.close();
+			
+			catalogXML_ = xml..script.children();
+		}
+		
+		//--------------------------------------
+		//  writeClassFile
+		//--------------------------------------
+		
+		private function writeClassFile(clazz:Clazz):void {
+			var file:File, 
+				fileStream:FileStream, 
+				clazzQName:String, 
+				packagePath:String;
+			
+			clazzQName = clazz.qName;
+			
+			packagePath = (clazzQName.indexOf('.') > -1) ? clazzQName : '';
+			packagePath = packagePath.substring(0, packagePath.lastIndexOf('.'));
+			packagePath = packagePath.replace(/\./g, '/');
+			if (packagePath !== '') {
+				packagePath = packagePath + '/';
+			}
+			
+			fileStream = new FileStream();
+			file = outputRoot_.resolvePath(packagePath + clazz.name + '.js');
+			fileStream.open(file, FileMode.WRITE);
+			fileStream.writeUTFBytes(clazz.output);
+			fileStream.close();
+		}
+		
+	]]></fx:Script>
+	
+	<fx:Declarations />
+	
+</s:WindowedApplication>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/83c26c9d/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/DisplayObject.js
----------------------------------------------------------------------
diff --git a/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/DisplayObject.js b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/DisplayObject.js
new file mode 100644
index 0000000..17805e3
--- /dev/null
+++ b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/DisplayObject.js
@@ -0,0 +1,173 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the 'License');
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an 'AS IS' BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @fileoverview 'vf2js.display.DisplayObject'
+ *
+ * @author erikdebruin@apache.org (Erik de Bruin)
+ */
+
+'use strict';
+
+goog.provide('vf2js.display.DisplayObject');
+
+goog.require('flash.display.DisplayObject');
+goog.require('flash.display.DisplayObjectContainer');
+goog.require('flash.display.IBitmapDrawable');
+goog.require('flash.display.LoaderInfo');
+goog.require('vf2js.events.EventDispatcher');
+
+
+
+/**
+ * @constructor
+ * @struct
+ * @extends {vf2js.events.EventDispatcher}
+ * @implements {flash.display.IBitmapDrawable}
+ */
+vf2js.display.DisplayObject = function() {
+  vf2js.display.DisplayObject.base(this, 'constructor');
+};
+goog.inherits(vf2js.display.DisplayObject, vf2js.events.EventDispatcher);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+vf2js.display.DisplayObject.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'DisplayObject', qName: 'vf2js.display.DisplayObject'}],
+      interfaces: [flash.display.IBitmapDrawable] };
+
+
+//------------------------------------------------------------------------------
+//
+//  PROPERTIES
+//
+//------------------------------------------------------------------------------
+
+
+/**
+ * loaderInfo
+ *
+ * @return {flash.display.LoaderInfo}
+ */
+vf2js.display.DisplayObject.prototype.get_loaderInfo = function() {
+	return window['apache-flex_loaderInfo'];
+};
+
+
+/**
+ * parent_
+ *
+ * @type {flash.display.DisplayObjectContainer}
+ */
+vf2js.display.DisplayObject.prototype.parent_;
+
+
+/**
+ * parent
+ *
+ * @param {flash.display.DisplayObjectContainer} value The parent container.
+ */
+vf2js.display.DisplayObject.prototype.set_parent = function(value) {
+	this.parent_ = value;
+};
+
+
+/**
+ * parent
+ *
+ * @return {flash.display.DisplayObjectContainer}
+ */
+vf2js.display.DisplayObject.prototype.get_parent = function() {
+    return this.parent_
+};
+
+
+/**
+ * root
+ *
+ * @return {flash.display.DisplayObject}
+ */
+vf2js.display.DisplayObject.prototype.get_root = function() {
+    return window['apache-flex_system-manager'];
+};
+
+
+/**
+ * stage
+ *
+ * @return {flash.display.Stage}
+ */
+vf2js.display.DisplayObject.prototype.get_stage = function() {
+    return window['apache-flex_stage'];
+};
+
+
+/**
+ * scaleX_
+ *
+ * @type {number}
+ */
+vf2js.display.DisplayObject.prototype.scaleX_;
+
+
+/**
+ * scaleX
+ *
+ * @return {number}
+ */
+vf2js.display.DisplayObject.prototype.get_scaleX = function() {
+  return scaleX_;
+};
+
+
+/**
+ * scaleX
+ *
+ * @param {number} value The new value.
+ */
+vf2js.display.DisplayObject.prototype.set_scaleX = function(value) {
+	this.scaleX_ = value;
+};
+
+
+/**
+ * scaleY_
+ *
+ * @type {number}
+ */
+vf2js.display.DisplayObject.prototype.scaleY_;
+
+
+/**
+ * scaleY
+ *
+ * @return {number}
+ */
+vf2js.display.DisplayObject.prototype.get_scaleY = function() {
+  return scaleY_;
+};
+
+
+/**
+ * scaleY
+ *
+ * @param {number} value The new value.
+ */
+vf2js.display.DisplayObject.prototype.set_scaleY = function(value) {
+	this.scaleY_ = value;
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/83c26c9d/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/DisplayObjectContainer.js
----------------------------------------------------------------------
diff --git a/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/DisplayObjectContainer.js b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/DisplayObjectContainer.js
new file mode 100644
index 0000000..5c24e8b
--- /dev/null
+++ b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/DisplayObjectContainer.js
@@ -0,0 +1,110 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the 'License');
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an 'AS IS' BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @fileoverview 'vf2js.display.DisplayObjectContainer'
+ *
+ * @author erikdebruin@apache.org (Erik de Bruin)
+ */
+
+'use strict';
+
+goog.provide('vf2js.display.DisplayObjectContainer');
+
+goog.require('vf2js.display.InteractiveObject');
+
+
+
+/**
+ * @constructor
+ * @struct
+ * @extends {vf2js.display.InteractiveObject}
+ */
+vf2js.display.DisplayObjectContainer = function() {
+  vf2js.display.DisplayObjectContainer.base(this, 'constructor');
+  
+  this.children_ = [];
+};
+goog.inherits(vf2js.display.DisplayObjectContainer, vf2js.display.InteractiveObject);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+vf2js.display.DisplayObjectContainer.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'DisplayObjectContainer', qName: 'vf2js.display.DisplayObjectContainer'}],
+      interfaces: [] };
+
+
+//------------------------------------------------------------------------------
+//
+//  PROPERTIES
+//
+//------------------------------------------------------------------------------
+
+
+/**
+ * children_
+ *
+ * @private
+ *
+ * @type {Array.<flash.display.DisplayObject>}
+ */
+vf2js.display.DisplayObjectContainer.prototype.children_;
+
+
+//------------------------------------------------------------------------------
+//
+//  METHODS
+//
+//------------------------------------------------------------------------------
+
+
+/**
+ * addChildAt
+ *
+ * @param {flash.display.DisplayObject} arg0 Argument 0
+ * @param {number} arg1 Argument 1
+ *
+ * @return {flash.display.DisplayObject}
+ */
+vf2js.display.DisplayObjectContainer.prototype.addChildAt = function(arg0, arg1) {
+  arg0.$_implementation.set_parent(this);
+  
+  this.children_[arg1] = arg0;
+  
+  this.dispatchEvent(new flash.events.Event(flash.events.Event.ADDED));
+
+  return arg0;
+};
+
+
+/**
+ * addChild
+ *
+ * @param {flash.display.DisplayObject} arg0 Argument 0
+ *
+ * @return {flash.display.DisplayObject}
+ */
+vf2js.display.DisplayObjectContainer.prototype.addChild = function(arg0) {
+  arg0.$_implementation.set_parent(this);
+  
+  this.children_.push(arg0);
+  
+  this.dispatchEvent(new flash.events.Event(flash.events.Event.ADDED));
+
+  return arg0;
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/83c26c9d/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/InteractiveObject.js
----------------------------------------------------------------------
diff --git a/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/InteractiveObject.js b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/InteractiveObject.js
new file mode 100644
index 0000000..211c8f3
--- /dev/null
+++ b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/InteractiveObject.js
@@ -0,0 +1,33 @@
+/**
+ * @fileoverview 'vf2jsvf2js.display.InteractiveObject'
+ *
+ * @author erikdebruin@apache.org (Erik de Bruin)
+ */
+
+'use strict';
+
+goog.provide('vf2js.display.InteractiveObject');
+
+goog.require('vf2js.display.DisplayObject');
+
+
+
+/**
+ * @constructor
+ * @struct
+ * @extends {vf2js.display.DisplayObject}
+ */
+vf2js.display.InteractiveObject = function() {
+  vf2js.display.InteractiveObject.base(this, 'constructor');
+};
+goog.inherits(vf2js.display.InteractiveObject, vf2js.display.DisplayObject);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+vf2js.display.InteractiveObject.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'InteractiveObject', qName: 'vf2js.display.InteractiveObject'}],
+      interfaces: [] }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/83c26c9d/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/LoaderInfo.js
----------------------------------------------------------------------
diff --git a/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/LoaderInfo.js b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/LoaderInfo.js
new file mode 100644
index 0000000..611ae00
--- /dev/null
+++ b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/LoaderInfo.js
@@ -0,0 +1,125 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the 'License');
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an 'AS IS' BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @fileoverview 'vf2js.display.LoaderInfo'
+ *
+ * @author erikdebruin@apache.org (Erik de Bruin)
+ */
+
+'use strict';
+
+goog.provide('vf2js.display.LoaderInfo');
+
+goog.require('vf2js.events.EventDispatcher');
+
+
+
+/**
+ * @constructor
+ * @struct
+ * @extends {vf2js.events.EventDispatcher}
+ */
+vf2js.display.LoaderInfo = function() {
+  vf2js.display.LoaderInfo.base(this, 'constructor');
+};
+goog.inherits(vf2js.display.LoaderInfo, vf2js.events.EventDispatcher);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+vf2js.display.LoaderInfo.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'LoaderInfo', qName: 'vf2js.display.LoaderInfo'}],
+      interfaces: [flash.events.IEventDispatcher] };
+
+
+//------------------------------------------------------------------------------
+//
+//  PROPERTIES
+//
+//------------------------------------------------------------------------------
+
+
+/**
+ * width
+ *
+ * @return {number}
+ */
+vf2js.display.LoaderInfo.prototype.get_width = function() {
+	return 1024;
+};
+
+
+/**
+ * bytesLoaded
+ *
+ * @return {number}
+ */
+vf2js.display.LoaderInfo.prototype.get_bytesLoaded = function() {
+	return 1;
+};
+
+
+/**
+ * height
+ *
+ * @return {number}
+ */
+vf2js.display.LoaderInfo.prototype.get_height = function() {
+	return 768;
+};
+
+
+/**
+ * url
+ *
+ * @return {string}
+ */
+vf2js.display.LoaderInfo.prototype.get_url = function() {
+	console.log('vf2js.display.LoaderInfo.get_url');
+	
+	return document.location.url;
+};
+
+
+/**
+ * bytesTotal
+ *
+ * @return {number}
+ */
+vf2js.display.LoaderInfo.prototype.get_bytesTotal = function() {
+	return 1;
+};
+
+
+//------------------------------------------------------------------------------
+//
+//  METHODS
+//
+//------------------------------------------------------------------------------
+
+
+/**
+ * dispatchEvent
+ *
+ * @param {Event} arg0 Argument 0
+ *
+ * @return {boolean}
+ */
+vf2js.display.LoaderInfo.prototype.dispatchEvent = function(arg0) {
+  return vf2js.display.LoaderInfo.base(this, 'dispatchEvent', arg0);
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/83c26c9d/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/MovieClip.js
----------------------------------------------------------------------
diff --git a/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/MovieClip.js b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/MovieClip.js
new file mode 100644
index 0000000..331ccc2
--- /dev/null
+++ b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/MovieClip.js
@@ -0,0 +1,115 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the 'License');
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an 'AS IS' BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @fileoverview 'vf2js.display.MovieClip'
+ *
+ * @author erikdebruin@apache.org (Erik de Bruin)
+ */
+
+'use strict';
+
+goog.provide('vf2js.display.MovieClip');
+
+goog.require('vf2js.display.Sprite');
+
+
+
+/**
+ * @constructor
+ * @struct
+ * @extends {flash.display.Sprite}
+ */
+vf2js.display.MovieClip = function() {
+  vf2js.display.MovieClip.base(this, 'constructor');
+};
+goog.inherits(vf2js.display.MovieClip, vf2js.display.Sprite);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+vf2js.display.MovieClip.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'MovieClip', qName: 'vf2js.display.MovieClip'}],
+      interfaces: [] };
+
+
+//------------------------------------------------------------------------------
+//
+//  PROPERTIES
+//
+//------------------------------------------------------------------------------
+
+
+/**
+ * framesLoaded
+ *
+ * @return {number}
+ */
+vf2js.display.MovieClip.prototype.get_framesLoaded = function() {
+	return 2;
+};
+
+
+/**
+ * currentFrame_
+ *
+ * @type {number}
+ */
+vf2js.display.MovieClip.prototype.currentFrame_ = 1;
+
+
+/**
+ * currentFrame
+ *
+ * @return {number}
+ */
+vf2js.display.MovieClip.prototype.get_currentFrame = function() {
+	return this.currentFrame_;
+};
+
+
+/**
+ * totalFrames
+ *
+ * @return {number}
+ */
+vf2js.display.MovieClip.prototype.get_totalFrames = function() {
+	return 2;
+};
+
+
+//------------------------------------------------------------------------------
+//
+//  METHODS
+//
+//------------------------------------------------------------------------------
+
+
+/**
+ * nextFrame
+ */
+vf2js.display.MovieClip.prototype.nextFrame = function() {
+    this.currentFrame_++;
+};
+
+
+/**
+ * stop
+ */
+vf2js.display.MovieClip.prototype.stop = function() {
+    // DO NOTHING, WE'RE NOT ON A TIMELINE
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/83c26c9d/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/Sprite.js
----------------------------------------------------------------------
diff --git a/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/Sprite.js b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/Sprite.js
new file mode 100644
index 0000000..c55f032
--- /dev/null
+++ b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/Sprite.js
@@ -0,0 +1,33 @@
+/**
+ * @fileoverview 'vf2jsvf2js.display.InteractiveObject'
+ *
+ * @author erikdebruin@apache.org (Erik de Bruin)
+ */
+
+'use strict';
+
+goog.provide('vf2js.display.Sprite');
+
+goog.require('vf2js.display.DisplayObjectContainer');
+
+
+
+/**
+ * @constructor
+ * @struct
+ * @extends {vf2js.display.DisplayObjectContainer}
+ */
+vf2js.display.Sprite = function() {
+  vf2js.display.Sprite.base(this, 'constructor');
+};
+goog.inherits(vf2js.display.Sprite, vf2js.display.DisplayObjectContainer);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+vf2js.display.InteractiveObject.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'Sprite', qName: 'vf2js.display.Sprite'}],
+      interfaces: [] }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/83c26c9d/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/Stage.js
----------------------------------------------------------------------
diff --git a/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/Stage.js b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/Stage.js
new file mode 100644
index 0000000..6837d83
--- /dev/null
+++ b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/display/Stage.js
@@ -0,0 +1,210 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the 'License');
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an 'AS IS' BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @fileoverview 'vf2js.display.Stage'
+ *
+ * @author erikdebruin@apache.org (Erik de Bruin)
+ */
+
+'use strict';
+
+goog.provide('vf2js.display.Stage');
+
+goog.require('flash.display.DisplayObjectContainer');
+goog.require('flash.display.StageAlign');
+
+
+
+/**
+ * @constructor
+ * @struct
+ * @extends {flash.display.DisplayObjectContainer}
+ */
+vf2js.display.Stage = function() {
+  vf2js.display.Stage.base(this, 'constructor');
+};
+goog.inherits(vf2js.display.Stage, flash.display.DisplayObjectContainer);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+vf2js.display.Stage.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'Stage', qName: 'vf2js.display.Stage'}],
+      interfaces: [] };
+
+
+//------------------------------------------------------------------------------
+//
+//  PROPERTIES
+//
+//------------------------------------------------------------------------------
+
+
+/**
+ * align_
+ *
+ * @private
+ * 
+ * @type {string}
+ */
+vf2js.display.Stage.prototype.align_ = flash.display.StageAlign.TOP;
+
+
+/**
+ * align
+ *
+ * @return {string}
+ */
+vf2js.display.Stage.prototype.get_align = function() {
+	return this.align_;
+};
+
+
+/**
+ * align
+ *
+ * @type {undefined}
+ */
+vf2js.display.Stage.prototype.set_align = function(value) {
+    this.align_ = value;
+};
+
+
+/**
+ * quality_
+ *
+ * @private
+ * 
+ * @type {string}
+ */
+vf2js.display.Stage.prototype.quality_;
+
+
+/**
+ * quality
+ *
+ * @return {string}
+ */
+vf2js.display.Stage.prototype.get_quality = function() {
+    return this.quality_;
+};
+
+
+/**
+ * quality
+ *
+ * @param {string} value The new value.
+ */
+vf2js.display.Stage.prototype.set_quality = function(value) {
+    this.quality_ = value;
+};
+
+
+/**
+ * scaleMode_
+ *
+ * @private
+ * 
+ * @type {string}
+ */
+vf2js.display.Stage.prototype.scaleMode_;
+
+
+/**
+ * scaleMode
+ *
+ * @return {string}
+ */
+vf2js.display.Stage.prototype.get_scaleMode = function() {
+    return this.scaleMode_;
+};
+
+
+/**
+ * scaleMode
+ *
+ * @param {string} value The new value.
+ */
+vf2js.display.Stage.prototype.set_scaleMode = function(value) {
+    this.scaleMode_ = value;
+};
+
+
+/**
+ * stageHeight
+ *
+ * @return {number}
+ */
+vf2js.display.Stage.prototype.get_stageHeight = function() {
+	return 768;
+};
+
+
+/**
+ * stageWidth
+ *
+ * @return {number}
+ */
+vf2js.display.Stage.prototype.get_stageWidth = function() {
+	return 1024;
+};
+
+
+//------------------------------------------------------------------------------
+//
+//  METHODS
+//
+//------------------------------------------------------------------------------
+
+
+/**
+ * addEventListener
+ *
+ * @param {string} arg0 Argument 0
+ * @param {Function} arg1 Argument 1
+ * @param {boolean=} opt_arg2 Argument 2 (optional)
+ * @param {number=} opt_arg3 Argument 3 (optional)
+ * @param {boolean=} opt_arg4 Argument 4 (optional)
+ */
+vf2js.display.Stage.prototype.addEventListener = function(arg0, arg1, opt_arg2, opt_arg3, opt_arg4) {
+  vf2js.display.Stage.base(this, 'addEventListener', arg0, arg1, opt_arg2, opt_arg3, opt_arg4);
+};
+
+
+/**
+ * dispatchEvent
+ *
+ * @param {Event} arg0 Argument 0
+ *
+ * @return {boolean}
+ */
+vf2js.display.Stage.prototype.dispatchEvent = function(arg0) {
+  return vf2js.display.Stage.base(this, 'dispatchEvent', arg0);
+};
+
+
+/**
+ * hasEventListener
+ *
+ * @param {string} arg0 Argument 0
+ *
+ * @return {boolean}
+ */
+vf2js.display.Stage.prototype.hasEventListener = function(arg0) {
+  return vf2js.display.Stage.base(this, 'hasEventListener', arg0);
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/83c26c9d/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/events/Event.js
----------------------------------------------------------------------
diff --git a/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/events/Event.js b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/events/Event.js
new file mode 100644
index 0000000..94f0426
--- /dev/null
+++ b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/events/Event.js
@@ -0,0 +1,136 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the 'License');
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an 'AS IS' BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @fileoverview 'vf2js.events.Event'
+ *
+ * @author erikdebruin@apache.org (Erik de Bruin)
+ */
+
+'use strict';
+
+goog.provide('vf2js.events.Event');
+
+
+
+/**
+ * @constructor
+ * @struct
+ * @param {string} arg0 Argument 0
+ * @param {boolean=} opt_arg1 Argument 1 (optional)
+ * @param {boolean=} opt_arg2 Argument 2 (optional)
+ */
+vf2js.events.Event = function(arg0, opt_arg1, opt_arg2) {
+    this._type = arg0;
+	
+    opt_arg1 = (opt_arg1 !== undefined) ? opt_arg1 : false;
+    this._bubbles = opt_arg1;
+  
+    opt_arg2 = (opt_arg2 !== undefined) ? opt_arg2 : false;
+    this._cancelable = opt_arg2;
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+vf2js.events.Event.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'Event', qName: 'vf2js.events.Event'}],
+      interfaces: [] };
+
+
+//------------------------------------------------------------------------------
+//
+//  PROPERTIES
+//
+//------------------------------------------------------------------------------
+
+
+/**
+ * _bubbles
+ *
+ * @private
+ *
+ * @type{boolean}
+ */
+vf2js.events.Event.prototype._bubbles;
+
+
+/**
+ * bubbles
+ *
+ * @return {boolean}
+ */
+vf2js.events.Event.prototype.get_bubbles = function() {
+    return this._bubbles;
+};
+
+
+/**
+ * _cancelable
+ *
+ * @private
+ *
+ * @type{boolean}
+ */
+vf2js.events.Event.prototype._cancelable;
+
+
+/**
+ * cancelable
+ *
+ * @return {boolean}
+ */
+vf2js.events.Event.prototype.get_cancelable = function() {
+    return this._cancelable;
+};
+
+
+/**
+ * _type
+ *
+ * @private
+ *
+ * @type{string}
+ */
+vf2js.events.Event.prototype._type;
+
+
+/**
+ * type
+ *
+ * @return {string}
+ */
+vf2js.events.Event.prototype.get_type = function() {
+    return this._type;
+};
+
+
+//------------------------------------------------------------------------------
+//
+//  METHODS
+//
+//------------------------------------------------------------------------------
+
+
+/**
+ * toString
+ *
+ * @return {string}
+ */
+vf2js.events.Event.prototype.toString = function() {
+    return '[Event type=' + this._type + ' bubbles=' + this._bubbles + ' cancelable=' + this._cancelable + ']';
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/83c26c9d/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/events/EventDispatcher.js
----------------------------------------------------------------------
diff --git a/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/events/EventDispatcher.js b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/events/EventDispatcher.js
new file mode 100644
index 0000000..01f1d32
--- /dev/null
+++ b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/events/EventDispatcher.js
@@ -0,0 +1,154 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the 'License');
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an 'AS IS' BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @fileoverview 'vf2js.events.EventDispatcher'
+ *
+ * @author erikdebruin@apache.org (Erik de Bruin)
+ */
+
+'use strict';
+
+goog.provide('vf2js.events.EventDispatcher');
+
+goog.require('goog.events.EventTarget');
+
+
+
+/**
+ * @constructor
+ * @struct
+ * @param {IEventDispatcher=} opt_arg0 Argument 0 (optional)
+ */
+vf2js.events.EventDispatcher = function(opt_arg0) {
+	this.eventTarget_ = new goog.events.EventTarget();
+
+    this.listeners_ = [];
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+vf2js.events.EventDispatcher.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'EventDispatcher', qName: 'vf2js.events.EventDispatcher'}],
+      interfaces: [] };
+
+
+//------------------------------------------------------------------------------
+//
+//  PROPERTIES
+//
+//------------------------------------------------------------------------------
+
+
+/**
+ * listeners_
+ *
+ * @private
+ *
+ * @type {Array.<string>}
+ */
+vf2js.events.EventDispatcher.prototype.listeners_;
+
+
+/**
+ * eventTarget_
+ *
+ * @private
+ *
+ * @type {goog.events.EventTarget}
+ */
+vf2js.events.EventDispatcher.prototype.eventTarget_;
+
+
+//------------------------------------------------------------------------------
+//
+//  METHODS
+//
+//------------------------------------------------------------------------------
+
+
+/**
+ * dispatchEvent
+ *
+ * @param {Event} arg0 Argument 0
+ *
+ * @return {boolean}
+ */
+vf2js.events.EventDispatcher.prototype.dispatchEvent = function(arg0) {
+    console.log('$ dispatchEvent: ' + arg0.get_type());
+    
+    return this.eventTarget_.dispatchEvent(arg0.get_type());
+};
+
+
+/**
+ * addEventListener
+ *
+ * @param {string} arg0 Argument 0
+ * @param {Function} arg1 Argument 1
+ * @param {boolean=} opt_arg2 Argument 2 (optional)
+ * @param {number=} opt_arg3 Argument 3 (optional)
+ * @param {boolean=} opt_arg4 Argument 4 (optional)
+ */
+vf2js.events.EventDispatcher.prototype.addEventListener = function(arg0, arg1, opt_arg2, opt_arg3, opt_arg4) {
+  console.log('Listen for event: ' + arg0);
+  
+  if (!this.hasEventListener(arg0)) {
+    this.listeners_.push(arg0);
+
+    this.eventTarget_.listen(arg0, arg1);
+  }
+};
+
+
+/**
+ * hasEventListener
+ *
+ * @param {string} arg0 Argument 0
+ *
+ * @return {boolean}
+ */
+vf2js.events.EventDispatcher.prototype.hasEventListener = function(arg0) {
+  return this.listeners_.indexOf(arg0) > -1;
+};
+
+
+/**
+ * removeEventListener
+ *
+ * @param {string} arg0 Argument 0
+ * @param {Function} arg1 Argument 1
+ * @param {boolean=} opt_arg2 Argument 2 (optional)
+ */
+vf2js.events.EventDispatcher.prototype.removeEventListener = function(arg0, arg1, opt_arg2) {
+  console.log('Unlisten event: ' + arg0);
+  
+  this.listeners_.splice(this.listeners_.indexOf(arg0), 1);
+  
+  this.eventTarget_.unlisten(arg0, arg1);
+};
+
+
+/**
+ * toString
+ *
+ * @return {string} The string
+ */
+vf2js.events.EventDispatcher.prototype.toString = function() {
+  //return this.toString();
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/83c26c9d/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/events/ProgressEvent.js
----------------------------------------------------------------------
diff --git a/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/events/ProgressEvent.js b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/events/ProgressEvent.js
new file mode 100644
index 0000000..d9c00c0
--- /dev/null
+++ b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/events/ProgressEvent.js
@@ -0,0 +1,75 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the 'License');
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an 'AS IS' BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @fileoverview 'vf2js.events.ProgressEvent'
+ *
+ * @author erikdebruin@apache.org (Erik de Bruin)
+ */
+
+'use strict';
+
+goog.provide('vf2js.events.ProgressEvent');
+
+goog.require('vf2js.events.Event');
+
+
+
+/**
+ * @constructor
+ * @struct
+ * @extends {vf2js.events.Event}
+ * @param {string} arg0 Argument 0
+ * @param {boolean=} opt_arg1 Argument 1 (optional)
+ * @param {boolean=} opt_arg2 Argument 2 (optional)
+ * @param {Number=} opt_arg3 Argument 3 (optional)
+ * @param {Number=} opt_arg4 Argument 4 (optional)
+ */
+vf2js.events.ProgressEvent = function(arg0, opt_arg1, opt_arg2, opt_arg3, opt_arg4) {
+  vf2js.events.ProgressEvent.base(this, 'constructor', arg0, opt_arg1, opt_arg2, opt_arg3, opt_arg4);
+};
+goog.inherits(vf2js.events.ProgressEvent, vf2js.events.Event);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+vf2js.events.ProgressEvent.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'ProgressEvent', qName: 'vf2js.events.ProgressEvent'}],
+      interfaces: [] };
+
+
+//------------------------------------------------------------------------------
+//
+//  METHODS
+//
+//------------------------------------------------------------------------------
+
+
+/**
+ * toString
+ *
+ * @return {string}
+ */
+vf2js.events.ProgressEvent.prototype.toString = function() {
+	var /** @type {string} */ result;
+	
+	result = vf2js.events.TimerEvent.base(this, 'toString');
+	result = result.replace('[Event ', '[ProgressEvent ');
+	result = result.replace(']', ' bytesLoaded=value bytesTotal=value]');
+	
+	return result;
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/83c26c9d/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/events/TimerEvent.js
----------------------------------------------------------------------
diff --git a/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/events/TimerEvent.js b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/events/TimerEvent.js
new file mode 100644
index 0000000..9c9da37
--- /dev/null
+++ b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/events/TimerEvent.js
@@ -0,0 +1,72 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the 'License');
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an 'AS IS' BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @fileoverview 'vf2js.events.TimerEvent'
+ *
+ * @author erikdebruin@apache.org (Erik de Bruin)
+ */
+
+'use strict';
+
+goog.provide('vf2js.events.TimerEvent');
+
+goog.require('vf2js.events.Event');
+
+
+
+/**
+ * @constructor
+ * @struct
+ * @extends {flash.events.Event}
+ * @param {string} arg0 Argument 0
+ * @param {boolean=} opt_arg1 Argument 1 (optional)
+ * @param {boolean=} opt_arg2 Argument 2 (optional)
+ */
+vf2js.events.TimerEvent = function(arg0, opt_arg1, opt_arg2) {
+  vf2js.events.TimerEvent.base(this, 'constructor', arg0, opt_arg1, opt_arg2);
+};
+goog.inherits(vf2js.events.TimerEvent, vf2js.events.Event);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+vf2js.events.TimerEvent.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'TimerEvent', qName: 'vf2js.events.TimerEvent'}],
+      interfaces: [] };
+
+
+//------------------------------------------------------------------------------
+//
+//  METHODS
+//
+//------------------------------------------------------------------------------
+
+
+/**
+ * toString
+ *
+ * @return {string}
+ */
+vf2js.events.TimerEvent.prototype.toString = function() {
+	var /** @type {string} */ result;
+	
+	result = vf2js.events.TimerEvent.base(this, 'toString');
+	result = result.replace('[Event ', '[TimerEvent ');
+	
+	return result;
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/83c26c9d/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/system/ApplicationDomain.js
----------------------------------------------------------------------
diff --git a/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/system/ApplicationDomain.js b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/system/ApplicationDomain.js
new file mode 100644
index 0000000..9e4eab4
--- /dev/null
+++ b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/system/ApplicationDomain.js
@@ -0,0 +1,77 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the 'License');
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an 'AS IS' BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @fileoverview 'vf2js.system.ApplicationDomain'
+ *
+ * @author erikdebruin@apache.org (Erik de Bruin)
+ */
+
+'use strict';
+
+goog.provide('vf2js.system.ApplicationDomain');
+
+
+
+/**
+ * @constructor
+ * @struct
+ * @param {ApplicationDomain=} opt_arg0 Argument 0 (optional)
+ */
+vf2js.system.ApplicationDomain = function(opt_arg0) {};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+vf2js.system.ApplicationDomain.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'ApplicationDomain', qName: 'vf2js.system.ApplicationDomain'}],
+      interfaces: [] };
+
+
+//------------------------------------------------------------------------------
+//
+//  METHODS
+//
+//------------------------------------------------------------------------------
+
+
+/**
+ * getDefinition
+ *
+ * @param {string} arg0 Argument 0
+ *
+ * @return {Object}
+ */
+vf2js.system.ApplicationDomain.prototype.getDefinition = function(arg0) {
+  	var fullName;
+
+  	fullName = arg0.replace(/::/gi, '.');
+
+  	return eval('new ' + fullName + '()');
+};
+
+
+/**
+ * hasDefinition
+ *
+ * @param {string} arg0 Argument 0
+ *
+ * @return {boolean}
+ */
+vf2js.system.ApplicationDomain.prototype.hasDefinition = function(arg0) {
+    return true;
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/83c26c9d/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/system/Capabilities.js
----------------------------------------------------------------------
diff --git a/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/system/Capabilities.js b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/system/Capabilities.js
new file mode 100644
index 0000000..4f349a8
--- /dev/null
+++ b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/system/Capabilities.js
@@ -0,0 +1,98 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the 'License');
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an 'AS IS' BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @fileoverview 'vf2js.system.Capabilities'
+ *
+ * @author erikdebruin@apache.org (Erik de Bruin)
+ */
+
+'use strict';
+
+goog.provide('vf2js.system.Capabilities');
+
+
+
+/**
+ * @constructor
+ * @struct
+ */
+vf2js.system.Capabilities = function() {};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+vf2js.system.Capabilities.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'Capabilities', qName: 'vf2js.system.Capabilities'}],
+      interfaces: [] };
+
+
+//------------------------------------------------------------------------------
+//
+//  STATIC PROPERTIES
+//
+//------------------------------------------------------------------------------
+
+
+/**
+ * language
+ *
+ * @return {string}
+ */
+vf2js.system.Capabilities.get_language = function() {
+	return 'en';
+};
+
+
+/**
+ * playerType
+ *
+ * @return {string}
+ */
+vf2js.system.Capabilities.get_playerType = function() {
+	return 'PlugIn';
+};
+
+
+/**
+ * screenDPI
+ *
+ * @return {Number}
+ */
+vf2js.system.Capabilities.get_screenDPI = function() {
+	return 72;
+};
+
+
+/**
+ * version
+ *
+ * @return {string}
+ */
+vf2js.system.Capabilities.get_version = function() {
+	return 'MAC 15,0,0,0';
+};
+
+
+/**
+ * os
+ *
+ * @return {string}
+ */
+vf2js.system.Capabilities.get_os = function() {
+	return 'Mac OS 10.9.5';
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/83c26c9d/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/utils/Timer.js
----------------------------------------------------------------------
diff --git a/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/utils/Timer.js b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/utils/Timer.js
new file mode 100644
index 0000000..1246c2e
--- /dev/null
+++ b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/utils/Timer.js
@@ -0,0 +1,182 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the 'License');
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an 'AS IS' BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @fileoverview 'vf2js.utils.Timer'
+ *
+ * @author erikdebruin@apache.org (Erik de Bruin)
+ */
+
+'use strict';
+
+goog.provide('vf2js.utils.Timer');
+
+goog.require('vf2js.events.EventDispatcher');
+goog.require('flash.events.IEventDispatcher');
+
+
+
+/**
+ * @constructor
+ * @struct
+ * @extends {vf2js.events.EventDispatcher}
+ * @param {Number} arg0 Argument 0
+ * @param {number=} opt_arg1 Argument 1 (optional)
+ */
+vf2js.utils.Timer = function(arg0, opt_arg1) {
+  vf2js.utils.Timer.base(this, 'constructor');
+  
+  this._delay = arg0;
+  
+  opt_arg1 = (opt_arg1 !== undefined) ? opt_arg1 : 10;
+  this._repeatCount = opt_arg1;
+  
+  this._currentCount = 0;
+};
+goog.inherits(vf2js.utils.Timer, vf2js.events.EventDispatcher);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+vf2js.utils.Timer.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'Timer', qName: 'vf2js.utils.Timer'}],
+      interfaces: [flash.events.IEventDispatcher] };
+
+
+//------------------------------------------------------------------------------
+//
+//  PROPERTIES
+//
+//------------------------------------------------------------------------------
+
+
+/**
+ * _currentCount
+ *
+ * @private
+ *
+ * @type {number}
+ */
+vf2js.utils.Timer.prototype._currentCount;
+
+
+/**
+ * _delay
+ *
+ * @private
+ *
+ * @type {number}
+ */
+vf2js.utils.Timer.prototype._delay;
+
+
+/**
+ * delay
+ *
+ * @return {number}
+ */
+vf2js.utils.Timer.prototype.get_delay = function() {
+	return this._delay;
+};
+
+
+/**
+ * delay
+ *
+ * @type {number}
+ */
+vf2js.utils.Timer.prototype.set_delay = function(value) {
+	this._delay = value;
+};
+
+
+/**
+ * _repeatCount
+ *
+ * @private
+ *
+ * @type {number}
+ */
+vf2js.utils.Timer.prototype._repeatCount;
+
+
+//------------------------------------------------------------------------------
+//
+//  METHODS
+//
+//------------------------------------------------------------------------------
+
+
+/**
+ * _timerEventHandler
+ *
+ * @private
+ */
+vf2js.utils.Timer.prototype._timerEventHandler = function() {
+    this.dispatchEvent(new flash.events.TimerEvent(flash.events.TimerEvent.TIMER));
+
+    if (this._running) {
+      if (this._repeatCount > 0) {
+        this._currentCount++;
+  
+	    //console.log("### HERE (dispatch) " + this._currentCount);
+        if (this._currentCount <= this._repeatCount) {
+          setTimeout(goog.bind(this._timerEventHandler, this), this._delay);
+        } else {
+          this.reset();
+        }
+      } else {
+        setTimeout(goog.bind(this._timerEventHandler, this), this._delay);
+      }
+    }
+};
+
+
+/**
+ * start
+ */
+vf2js.utils.Timer.prototype.start = function() {
+  this._running = true;
+
+  setTimeout(goog.bind(this._timerEventHandler, this), this._delay);
+  
+  console.log("$ Timer start");
+};
+
+
+/**
+ * reset
+ */
+vf2js.utils.Timer.prototype.reset = function() {
+  this.stop();
+  
+  this._currentCount = 0;
+  
+  console.log("$ Timer reset");
+};
+
+
+/**
+ * stop
+ */
+vf2js.utils.Timer.prototype.stop = function() {
+  this._running = false;
+  
+  console.log("$ Timer stop");
+};
+
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/83c26c9d/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/utils/getDefinitionByName.js
----------------------------------------------------------------------
diff --git a/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/utils/getDefinitionByName.js b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/utils/getDefinitionByName.js
new file mode 100644
index 0000000..65a2466
--- /dev/null
+++ b/vf2js/utils/PlayerGlobalToJS/src/assets/vf2js/utils/getDefinitionByName.js
@@ -0,0 +1,53 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the 'License');
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an 'AS IS' BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @fileoverview 'vf2js.utils.getDefinitionByName'
+ *
+ * @author erikdebruin@apache.org (Erik de Bruin)
+ */
+
+'use strict';
+
+goog.provide('vf2js.utils.getDefinitionByName');
+
+
+
+/**
+ * @constructor
+ * @struct
+ * @param {string} value The qName of the class.
+ * @return {Object} A reference to the class.
+ */
+vf2js.utils.getDefinitionByName = function(value) {
+	var fullName;
+	
+	fullName = value.replace(/::/gi, '.');
+	
+	console.log('VF2JS (vf2js.utils.getDefinitionByName): ' + fullName);
+	
+	return eval(fullName + '.prototype');
+}; 
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+vf2js.utils.getDefinitionByName.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'getDefinitionByName', qName: 'vf2js.utils.getDefinitionByName'}],
+      interfaces: [ ] };
+
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/83c26c9d/vf2js/utils/PlayerGlobalToJS/src/nl/ixms/Utils.as
----------------------------------------------------------------------
diff --git a/vf2js/utils/PlayerGlobalToJS/src/nl/ixms/Utils.as b/vf2js/utils/PlayerGlobalToJS/src/nl/ixms/Utils.as
new file mode 100644
index 0000000..6f54db5
--- /dev/null
+++ b/vf2js/utils/PlayerGlobalToJS/src/nl/ixms/Utils.as
@@ -0,0 +1,44 @@
+package nl.ixms
+{
+public final class Utils
+{
+	public static function cleanClassQName(classQName:String):String {
+		return classQName.
+			replace(/\//g, '.').
+			replace(/:/g, '.').
+			replace(/\.\./g, '.');
+	}
+	
+	public static function parseType(type:String):String {
+		var result:String;
+		
+		switch (type) {
+			case 'int' :
+			case 'uint' :
+				result = 'number';
+				
+				break;
+			
+			case 'Boolean' :
+			case 'String' :
+				result = type.toLowerCase();
+				
+				break;
+			
+			default :
+				if (type.indexOf('.') > 0) {
+					result = Utils.cleanClassQName(type);
+				} else {
+					result = type;
+				}
+				
+				break;
+		}
+		
+		return result;
+	}
+	
+	public function Utils() {}
+	
+}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/83c26c9d/vf2js/utils/PlayerGlobalToJS/src/nl/ixms/enums/MemberType.as
----------------------------------------------------------------------
diff --git a/vf2js/utils/PlayerGlobalToJS/src/nl/ixms/enums/MemberType.as b/vf2js/utils/PlayerGlobalToJS/src/nl/ixms/enums/MemberType.as
new file mode 100644
index 0000000..77848b8
--- /dev/null
+++ b/vf2js/utils/PlayerGlobalToJS/src/nl/ixms/enums/MemberType.as
@@ -0,0 +1,62 @@
+package nl.ixms.enums
+{
+	
+public class MemberType
+{
+	
+	//--------------------------------------------------------------------------
+	//
+	//    Class constants
+	//
+	//--------------------------------------------------------------------------
+	
+	public static const CONSTANT:MemberType = new MemberType("constants");
+	public static const METHOD:MemberType = new MemberType("methods");
+	public static const PROPERTY:MemberType = new MemberType("properties");
+	public static const STATIC_CONSTANT:MemberType = new MemberType("static_constants");
+	public static const STATIC_METHOD:MemberType = new MemberType("static_methods");
+	public static const STATIC_PROPERTY:MemberType = new MemberType("static_properties");
+	public static const STATIC_VARIABLE:MemberType = new MemberType("static_variables");
+	public static const VARIABLE:MemberType = new MemberType("variables");
+	
+	
+	
+	//--------------------------------------------------------------------------
+	//
+	//    Constructor
+	//
+	//--------------------------------------------------------------------------
+	
+	public function MemberType(stringValue:String) {
+		this.stringValue = stringValue;
+	}
+	
+	
+	
+	//--------------------------------------------------------------------------
+	//
+	//    Variables
+	//
+	//--------------------------------------------------------------------------
+	
+	private var stringValue:String;
+	
+	
+	
+	//--------------------------------------------------------------------------
+	//
+	//    Methods
+	//
+	//--------------------------------------------------------------------------
+	
+	//----------------------------------
+	//    toString
+	//----------------------------------
+	
+	public function toString():String {
+		return stringValue;
+	}
+	
+}
+
+}


Mime
View raw message