Skip to content

Instantly share code, notes, and snippets.

@marchbold
Created September 18, 2016 00:11
Show Gist options
  • Save marchbold/89db0546200098c1e989495a0fa87c8b to your computer and use it in GitHub Desktop.
Save marchbold/89db0546200098c1e989495a0fa87c8b to your computer and use it in GitHub Desktop.
Example of saving a screen shot to the camera roll
package
{
import com.distriqt.extension.image.Image;
import com.distriqt.extension.image.ImageFormat;
import com.distriqt.extension.image.events.ImageDataEvent;
import com.distriqt.extension.image.events.ImageEvent;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
import flash.geom.Matrix;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.utils.ByteArray;
import flash.utils.getTimer;
import flash.geom.Rectangle;
/**
* Sample application for using the Image Native Extension
* to save a stage screenshot to the camera roll
*/
public class TestImage extends Sprite
{
public static var APP_KEY : String = "APPLICATION_KEY";
//
// VARIABLES
//
private var _text : TextField;
/**
* Class constructor
*/
public function TestImage()
{
super();
stage.align = StageAlign.TOP_LEFT;
//stage.scaleMode = StageScaleMode.NO_SCALE;
_text = new TextField();
_text.defaultTextFormat = new TextFormat( "_typewriter", 18 );
addChild( _text );
try
{
Image.init( APP_KEY );
message( "Image Supported: " + Image.isSupported );
message( "Image Version: " + Image.service.version );
Image.service.addEventListener( ImageEvent.SAVE_TO_CAMERAROLL_COMPLETE, saveToCameraRoll_completeHandler );
Image.service.addEventListener( ImageEvent.SAVE_TO_CAMERAROLL_ERROR, saveToCameraRoll_errorHandler );
}
catch (e:Error)
{
message( e.message );
}
stage.addEventListener( Event.RESIZE, stage_resizeHandler, false, 0, true );
stage.addEventListener( MouseEvent.CLICK, mouseClickHandler, false, 0, true );
if (stage) stage_resizeHandler( null );
}
//
// CAMERA ROLL TESTS
//
private function saveToCameraRoll():void
{
message( "saveToCameraRoll" );
var screenshot:BitmapData = new BitmapData( stage.stageWidth, stage.stageHeight );
screenshot.draw( stage, new Matrix(), null, null, new Rectangle(0,0,stage.stageWidth,stage.stageHeight) );
Image.service.saveToCameraRoll(
screenshot,
ImageFormat.PNG,
1.0,
String(Math.floor(Math.random()*10000)) + "_test.png" );
}
private function saveToCameraRoll_completeHandler( event:ImageEvent ):void
{
message( "saveToCameraRoll : complete: "+event.identifier );
}
private function saveToCameraRoll_errorHandler( event:ImageEvent ):void
{
message( "saveToCameraRoll : error: "+event.error );
}
//
// HELPERS
private function message( str:String ):void
{
trace( str );
_text.appendText(str+"\n");
}
//
// EVENT HANDLERS
//
private function stage_resizeHandler( event:Event ):void
{
_text.width = stage.stageWidth;
_text.height = stage.stageHeight - 100;
}
private function mouseClickHandler( event:MouseEvent ):void
{
saveToCameraRoll();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment