Skip to content

Instantly share code, notes, and snippets.

@gonchar
Created February 20, 2013 18:18
Show Gist options
  • Save gonchar/4997713 to your computer and use it in GitHub Desktop.
Save gonchar/4997713 to your computer and use it in GitHub Desktop.
Readback screenshot in Chrome PPAPI Flash Player Plugin
package com.realaxy.utils {
import alternativa.engine3d.core.Camera3D;
import flash.display.BitmapData;
import flash.display.Stage3D;
import flash.events.TimerEvent;
import flash.utils.Timer;
/**
* Readback screenshot in Chrome PPAPI Flash Player Plugin
*/
public class ScreenshotGrabber {
private var oldW : Number;
private var oldH : Number;
private var timer : Timer = new Timer(1);
private var camera : Camera3D;
private var stage3D : Stage3D;
private var callback : Function;
public function ScreenshotGrabber(camera3D : Camera3D, stage3D : Stage3D) {
camera = camera3D;
this.stage3D = stage3D;
timer.addEventListener(TimerEvent.TIMER, onTimer);
}
public function grab(width : Number, height : Number, callbackFunction : Function) : void {
oldW = camera.view.width;
oldH = camera.view.height;
camera.view.width = width;
camera.view.height = height;
camera.view.renderToBitmap = true;
callback = callbackFunction;
timer.start();
}
private function onTimer(event : TimerEvent) : void {
timer.stop();
camera.render(stage3D);
var bmd : BitmapData = camera.view.canvas.clone();
camera.view.renderToBitmap = false;
camera.view.width = oldW;
camera.view.height = oldH;
if (callback) callback(bmd);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment