Created
December 13, 2011 09:57
-
-
Save mikecann/1471467 to your computer and use it in GitHub Desktop.
FP11 Performance Analytics
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package | |
{ | |
import com.google.analytics.GATracker; | |
import flash.display.Sprite; | |
import flash.display.Stage3D; | |
import flash.display.StageAlign; | |
import flash.display.StageScaleMode; | |
import flash.display3D.Context3D; | |
import flash.display3D.Context3DRenderMode; | |
import flash.events.ErrorEvent; | |
import flash.events.Event; | |
import flash.system.ApplicationDomain; | |
import flash.system.Capabilities; | |
public class FP11PerformanceAnalytics extends Sprite | |
{ | |
private var _tracker : GATracker; | |
public function FP11PerformanceAnalytics() | |
{ | |
_tracker = new GATracker(this, 'XXXXXXXXXXXXX', 'AS3'); | |
_tracker.trackPageview('/'); | |
if (stage != null) init(); | |
else addEventListener(Event.ADDED_TO_STAGE, init); | |
} | |
private function init(e:Event = null):void | |
{ | |
if (hasEventListener(Event.ADDED_TO_STAGE)) | |
removeEventListener(Event.ADDED_TO_STAGE, init); | |
stage.scaleMode = StageScaleMode.NO_SCALE; | |
stage.align = StageAlign.TOP_LEFT; | |
// are we running Flash 11 with Stage3D available? | |
var stage3DAvailable:Boolean = ApplicationDomain.currentDomain.hasDefinition("flash.display.Stage3D"); | |
if (stage3DAvailable) | |
{ | |
stage.stage3Ds[0].addEventListener(Event.CONTEXT3D_CREATE, onContext3DCreate); | |
// detect when the swf is not using wmode=direct | |
stage.stage3Ds[0].addEventListener(ErrorEvent.ERROR, onStage3DError); | |
// request hardware 3d mode now | |
stage.stage3Ds[0].requestContext3D(); | |
} | |
else | |
{ | |
trace("stage3DAvailable is false! Older version of SDK?"); | |
_tracker.trackEvent("Stage3D","Not Available","Older version of SDK?"); | |
} | |
} | |
// this error is fired if the swf is not using wmode=direct | |
private function onStage3DError ( e:ErrorEvent ):void | |
{ | |
trace("Embed Error Detected! Flash 11 settings have hardware 3D turned OFF. Is wmode=direct in the html?"); | |
_tracker.trackEvent("Stage3D","Not Available","onStage3DError - Flash 11 settings have hardware 3D turned OFF. Is wmode=direct in the html?"); | |
} | |
private function onContext3DCreate(event:Event):void | |
{ | |
// Obtain the current context | |
var t:Stage3D = event.target as Stage3D; | |
var context3D : Context3D = t.context3D; | |
if (context3D == null) | |
{ | |
// Currently no 3d context is available (error!) | |
trace('ERROR: no context3D - video driver problem?'); | |
_tracker.trackEvent("Stage3D","Not Available","oERROR: no context3D - video driver problem?");_tracker | |
return; | |
} | |
// detect software mode (html might not have wmode=direct) | |
if ((context3D.driverInfo == Context3DRenderMode.SOFTWARE) || (context3D.driverInfo.indexOf('oftware')>-1)) | |
{ | |
//Context3DRenderMode.AUTO | |
trace("Software Rendering Detected!"); | |
_tracker.trackEvent("Stage3D","Software Render",context3D.driverInfo); | |
} | |
trace("Flash 11 Stage3D working! Flash Version: "+Capabilities.version+", 3D mode: "+context3D.driverInfo); | |
_tracker.trackEvent("Flash11","Hardware Render",context3D.driverInfo); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment