Pure AS3 self-preloader

My project originally had everything on the timeline, but I have since moved all the code to the document class, but some of my assets are still in the library and some of them are embedded. I'm trying to make a self-preloader that doesn't use any external files, but I can't seem to find a good tutorial that doesn't involve using the timeline. Can anyone point me to a pure AS3 self-preloader tutorial or tell me where I'm supposed to put everything?

If you mean by "self-preloader" a pure Standalone as3 preloader:
var l:Loader = new Loader();
l.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loop);
l.contentLoaderInfo.addEventListener(Event.COMPLETE, done);
//this line has to be adapted to the name of your document class
l.load(new URLRequest("main.swf"));
function loop(e:ProgressEvent):void
    var kBytesLoaded:int = Math.round(e.bytesLoaded/1024);
    var kBytesTotal:int = Math.round(e.bytesTotal/1024);
    var perc:Number = kBytesLoaded / kBytesTotal;
    trace("PERCENT:"+perc);
function done(e:Event):void
    //this line for the stuff you might need to visually communicate the loading process and want to remove when loading is done
    removeChildAt(0);
    addChild(l);

Similar Messages

  • Exporting/Using SWC in pure AS3 project

    Hi,
    I have multiple movieclips, each with 5 image-movieclips inside, which allows me to manipulate which image-movieclip is displayed in an animation. So, if image-mc1.alpha = 0, then image-mc2, next in the 5 layers, which has a default alpha of 1 is displayed. 5 image-mc's, so can use alpha to show whichever is needed.
    There are 37 of these image-mc's in the project.
    Instead of a FLA based project, I would like to try a pure-AS3 version, maybe compile using Flex/AIR SDK. One way to re-use these complex mc's would be a create a SWC for each (not sure one SWC with all 37 can be created in CS6, or how each would be called in the script?).
    When I try this, using one multi-mc/multi-layer mc exported as a SWC and try to reference its internal mc's re: alpha setting, doesn't work.
    image1.imagea1.alpha = 0;//image1 is the instantiated version of the SWC's mc done as addChild(image1)
    In the FLA version, this script would cause the second mc, imageb1, which has a default alpha of 1, to display. But this is not happening in the AS3 version. Instead, image1.imagea1 still displays, no alpha effect.
    Any way to get this to work?

    Again, thank you.
    I guess what I'm not clear about is how to add/call each in the script. For example, the mc's are p1...p37. (As mentioned, each of these has 5 subordinate mc's inside with images.)
    So, if I create all 37 as class P, how would I instantiate each one of the 37 separately?:
    var p1:P=new P();
    addChild(P.p1);
    //and
    var p2:P=new P();
    addChild(P.p2);
    //etc...
    var p37:P=new P();
    addChild(P.p37);
    Then
    displayF("p37.imagea1");
    I'm not sure how to reference/script these.

  • For pure AS3 development do we still need to overlay the FLEX SDK?

    Hi Guys
    I've found this whole SDK overlay business a mess and very confusing. I've found this document
    http://www.adobe.com/devnet/air/articles/ane-android-devices.html
    which states
    "The distribution of the AIR SDK with ASC 2.0 is for pure ActionScript development only. It should not be combined with an existing Flex SDK.
    To support Flex application development with newer versions of the AIR SDK, an AIR SDK overlay distribution that does not include ASC 2.0 needs to be overlaid over the Flex SDK bundled with Flash Builder 4.7."
    So if we are doing pure AS3 development there is no longer any need to do any 'overlaying' of one SDK Folder onto another.  We just need to get the latest AIR SDK with complier ( http://www.adobe.com/devnet/air/air-sdk-download.html )
    We should then update the AIR SDK if using Flash Builder via (  http://helpx.adobe.com/flash-builder/kb/overlay-air-sdk-flash-builder. html ) (Note it still uses the term 'overlay' but you are not really overlaying but replacing).
    Is this conclusion correct.  Do we just need the SDK with the new compilier and nothing else ?
    Can someone from Adobe confirm please ?
    Thanks
    PS - I've asked this question on the Flash Builder Forom but there's been no response.

    Yes, that's correct, for pure AS3 development you need not use the Flex SDK overlay. For this you should use asc2 compiler available at http://www.adobe.com/devnet/air/air-sdk-download.html . Also below are step to overlay your AIR SDK with Flash builder 4.7
    1. Exit Flash Builder. 
    2. Back up the AIR SDK availabe at Application/FB4.7/eclipse/plugins/com.adobe.flash.compiler_4.7.0.349722/ by copying the entire directory and rename it to something AIRSDKversion. Now, you have two folder AIRSDK(default one) and AIRSDKversion(copied one).
    3. Download the appropriate AIR SDK file for your operating system e.g. http://www.adobe.com/devnet/air/air-sdk-download.html unzip and save it on your MAC OS X.
    4. On Terminal, run the below command
    sudo ditto /path/air3-8_sdk_sa_mac /Applications/Adobe\ Flash\ Builder\ 4.7/eclipse/plugins/com.adobe.flash.compiler_4.7.0.349722/AIRSDK
    /path/air3-8_sdk_sa_mac -> path where you downloaded the AIR SDK
    /Applications/Adobe\ Flash\ Builder\ 4.7/eclipse/plugins/com.adobe.flash.compiler_4.7.0.349722/AIRSDK -> path where you overlay the new AIR SDK
    5. (Optional) To access the new AIR 3.8 APIs, update your application descriptor file to the 3.8 namespace.
    To update the namespace, change the xmlns attribute in your application descriptor to: <application xmlns="http://ns.adobe.com/air/application/3.8">
    6. (Optional) To ensure that the output SWF file targets SWF version 21, pass an additional compiler argument: -swf-version=21.
    Hope this will help.
    Regards,
    Nimit

  • How to use TestRunnerBase in pure AS3 / no MXML

    Hi,
    is there a way to use the testRunnerBase GUI for a pure AS3 project, without a mxml?
    Thank you

    Hi, the testRunnerBase is a Flex application, so you can't use it in a pure AS3 environment without including all of the Flex dependencies.

  • Brain Fart on pure AS3 Project

    I Generally hang out in Flex Land, but by no means would be considered a new guy to the world of AS3.  I am currently creating a pure AS3 app and I can't get the darn thing to get a BG color. I  have the following:
    package
    import flash.display.Sprite;
    [SWF(width='800',height='600',backgroundColor='0xff0000',frameRate='24')]
    public class Surprise extends Sprite{
    public function Surprise(){
    this.graphics.beginFill( 0xff00ff, .5 );
    this.graphics.drawCircle( 0, 0, 10 );
    And all I see is that little purple circle, no Red BG. I hope I am missing something foolish, for i feel quite foolish posting such a stupid question on line. 
    Thanks.
    -Andrew

    Turns out the code was fine, I looked at the HTML that was being generated to render the AS3 file, and that was crap.  Deleted the bin-debug folder and it created new html for me and works great.    

  • Scrolling Mobile List in Pure AS3?

    I'd like to use a scrolling list in one of my AS3 mobile projects. I like the one built for Flex, but I do not wish to use flex as that would be overkill and I already have the project written in AS3.
    Does anyone know of any pure AS3 scrolling list components for mobile?
    thanks,
    Jack

    That's the flex component I wish to immitate. But since I am not using Flex, I cannot use the spark component. (I wish I could use spark components, but Adobe built them in such a way that is nearly impossibnle to use in a non-flex project.)
    I am hoping there is a pre-built nonFlex, pure AS3 equilevent. 

  • Mobile apps in pure AS3

        Hi there,
    I'm wondering what components (such as list control, buttons, date picker and so on) others are using  when they develop pure AS3 mobile apps for IOS.  Is there a book that you can suggest for me to help understand how components are built in AS3?
    Thanks

    If you want performance you'll need to use Stage3D to utilize the GPU. The flash/flex display list will never match the speed of Stage3D. The mx and spark components will never feel as 'native' as coding in objective-c until they literally transcode from AS3(4?) to Obj-c and compile to arm. Spark is more optimized than mx so it does make MXML (Flex) a viable alternative. It certainly does not feel native however.
    You should really consider how 'native' you need it to feel. People, I find, are quite tolerant. You may be trying to overachieve in an area that less important than the actual functionality your app provides. Users will use an interface that's not buttery smooth if you actually provide a service they desire.
    Pure code is just if you really want to do everything yourself.  There's really little out there to help you. The essence of going the "pure AS3" is that you are going to code it all yourself. All my projects aside 2 are pure AS3 and I rely on Starling/FeathersUI heavily to provide the closest to "native like" feel. For the only truely "native like" feel, you'll need to code entirely on the GPU.
    There's nothing built-in like Flex shares data view to view. If you go pure as3 and write your app all on your own terms then simply keep that desire in mind from the start and code yout hand made view system to either pass references to the data or make a singleton registry to share data. Overall, in pure as3, be prepared to do it all manually. You have little to none of the automation of Flex.

  • Pure AS3 Project unable to resolve resource bundle

    I've been working on a pure AS3 project in Flash Builder and all has been going just fine. All of a sudden, I started getting errors such as:
    Unable to resolve resource bundle "core" for locale "en_US". Player Unknown Flex Problem
    What in the heck did I likely do?  Any hints welcome.

    I jut saw the posting today.
    Place your local folder in application root
    In project properties : Flex Compiler Argument : additional compiler argument : -source-path ../locale/{locale}
    add this.

  • Cleaning Up Vector (array like) in pure AS3 project

    I have been learning a game type animation from a tutorial at this site: http://www.emanueleferonato.com/2011/11/08/as3-version-of-nodes-engine-full-playable-game- with-infinite-solvable-levels/. Source code there online and also available for download.
    Want to try to set up additional levels of difficulty, involving adding more draggables and targets. In order to change this level during a game, (with a set of radio buttons and change handler noting the change in radio button selection) using a pure AS3 and single frame necessitates removing (cleaning up) the draggables and targets already placed on stage in 2 Vector type arrays.
    Have tried various versions of removeChild, removeChildAt with no success.
    Here is the relevant AS3. Maybe someone could suggest a way to clean up/remove all Vector members before the new ones are instantiated on stage. If not removed, they end up at 0,0, one atop the other, while the new ones are randomly placed onto the stage.
    Thank you for your help.
    public class Main extends Sprite {
            private const DRAGGABLES:Number=4;
            private const TARGETS:Number=5;
            private var draggableNode:DraggableNode;
            private var target:Target;
            private var laserCanvas:Sprite=new Sprite();
            private var draggableVector:Vector.<DraggableNode>=new Vector.<DraggableNode>();
            private var targetVector:Vector.<Target>=new Vector.<Target>();
            private var isDragging:Boolean=false;
            public function Main() {
                addChild(laserCanvas);
                placeDraggables(false);
                placeTargets(false);
                shuffleDraggables();
                drawLaser();
                stage.addEventListener(MouseEvent.MOUSE_MOVE,moving);
    private function placeDraggables(justMove:Boolean):void {
                for (var i:Number=0; i<DRAGGABLES; i++) {
                    if (! justMove) {
                        draggableNode=new DraggableNode();
                        addChild(draggableNode);
                        draggableVector.push(draggableNode);
                        draggableNode.addEventListener(MouseEvent.MOUSE_DOWN,drag);
                        draggableNode.addEventListener(MouseEvent.MOUSE_UP,dontDrag);
                    do {
                        var wellPlaced:Boolean=true;
                        draggableVector[i].x=Math.floor(Math.random()*600)+20;
                        draggableVector[i].y=Math.floor(Math.random()*440)+20;
                        for (var j:Number=i-1; j>=0; j--) {
                            if (getDistance(draggableVector[j],draggableVector[i])<150) {
                                wellPlaced=false;
                    } while (!wellPlaced);
            private function placeTargets(justMove:Boolean):void {
                for (var i:Number=0; i<TARGETS; i++) {
                    if (! justMove) {
                        target=new Target();
                        addChildAt(target,0);
                        targetVector.push(target);
                        target.alpha=0.5;
                    do {
                        var wellPlaced:Boolean=true;
                        var segment=Math.floor(Math.random()*DRAGGABLES);
                        var p1:Sprite=draggableVector[segment];
                        var p2:Sprite=draggableVector[(segment+1)%DRAGGABLES];
                        var angle:Number=Math.atan2((p2.y-p1.y),(p2.x-p1.x))
                        var targetDistance:Number=Math.random()*getDistance(p1,p2);
                        targetVector[i].x=p1.x+targetDistance*Math.cos(angle);
                        targetVector[i].y=p1.y+targetDistance*Math.sin(angle);
                        for (var j:Number=i-1; j>=0; j--) {
                            if (getDistance(targetVector[j],targetVector[i])<50) {
                                wellPlaced=false;
                        for (j=0; j<DRAGGABLES; j++) {
                            if (getDistance(draggableVector[j],targetVector[i])<50) {
                                wellPlaced=false;
                    } while (!wellPlaced);

    about coding, this is an excerpt from a book i wrote (Flash Game Development: In a Social, Mobile and 3D World),
    it's taken from a chapter that shows how coding typically evolves for a novice with a main idea and then progresses as more and more features are added:
    Everything works the way it should but there is a major problem. Actually, there is more than one major problem and there are some minor problems but I will address the biggest problem, first: my Main class is quickly becoming a mess.
    I have all this code for controlling player in Main and I will need more code which will make Main an even bigger mess. In addition, I will need to add an introduction view (by view, I mean what is presented on-stage) to give some information about the game and I should probably allow users to customize the keys they use for movement. Not everyone likes using the arrow keys. (Heck, I do not like using the arrow keys.) In addition, I will need a game-over view, eventually.
    I am heading for a major mess in Main. So, while I can continue to put all my coding in Main, that is just like putting all your code in frame 1 of the main timeline and that bypasses one of the biggest advantages of OOP, encapsulation.
    By encapsulation, I mean each class should contain only the information it needs to do its job. I want my Main class to control which views are presented on-stage. When the game starts, Main will add an intro view. When the user is finished with the intro view, Main will remove the intro view and add the game view (where the player and enemy tanks will fight) and when the game is over, Main will remove the game view and add the game over view.
    I will use an IntroView class to control what happens in the introduction view and I'll use a GameView class to monitor what happens when player and enemy fight and an EndView to control what is displayed when combat is over - maybe the user's score or a taunting message.
    I do not think I want the GameView class to control the fighting. I want all the code that controls player to be in the PlayerTank class and all the code that controls enemy to be in the EnemyTank class. That will simplify Main so it is easier to work with, will provide better encapsulation and will make it easier and faster to find the code I need to edit when changes and additions are needed.
    While I am simplifying my code, I am going to create a keyboard controls class (KBcontrols) to store the key codes for moving left, right, up and down. I'm going to use static methods so I can assign those key codes in IntroView and use them in PlayerTank.
    I do not want to be forced to pass those key codes back-and-forth because I am going to have one PlayerTank instance in IntroView (so users can test the keyboard controls) and a different PlayerTank instance in GameView. In addition, I may later want to allow users to re-define the keyboard controls while in GameView or elsewhere. I could make KBcontrols a singleton class but I feel like making it a class with static properties for no special reason.
    (Actually, I already used a singleton class in Chapter 4 for a shape-based hit test that I showed in the BitmapData section. So, showing the other way to make data easily available among several classes is reasonable.)
    There are quite a few things I am thinking about adding (like scoring and a timer and enemy intelligence etc) and I do not know exactly what classes I'm going to have at the end of this project and I sure do not know all the code that will be in each class that I anticipate will be needed. That may be a little unsettling but it is how applications and games evolve (at least, when I am the developer).

  • Distinguish between pure AS3 and Flex project

    Hey,
    how can I distinguish if I am compiling currently an AS3 or a Flex project (mxml vs. pure as)?
    I acutally want to look something up in the "evaluate" method of a GenerativeFirstPassEvaluator before doing the processing. So I need to know it there.
    Any help is much appreciated.
    Best,
    Joa

    MXML is converted to AS3 code as part of the compilation process, then the AS3 is compiled normally like the rest of the project. I don’t think that GFPE is run over anything but an AS3 tree. There
    may be a way to figure out where the original source came from, e.g. .mxml or .as file, but you’d have to interactively debug and scan the data structures — I don’t know off hand.
     - Jono
    From: Joa Ebert <[email protected]>
    Reply-To: <[email protected]>
    Date: Mon, 31 Mar 2008 05:40:13 -0700
    To: <[email protected]>
    Subject: Distinguish between pure AS3 and Flex project
    A new discussion was started by Joa Ebert in
    Developers --
      Distinguish between pure AS3 and Flex project
    Hey,
    how can I distinguish if I am compiling currently an AS3 or a Flex project (mxml vs. pure as)?
    I acutally want to look something up in the "evaluate" method of a GenerativeFirstPassEvaluator before doing the processing. So I need to know it there.
    Any help is much appreciated.
    Best,
    Joa
    View/reply at Distinguish between pure AS3 and Flex project
    <http://www.adobeforums.com/webx?13@@.59b4da24>
    Replies by email are OK.
    Use the unsubscribe
    <http://www.adobeforums.com/webx?280@@.59b4da24!folder=.3c060fa3>  form to cancel your email subscription.

  • Flex and pure AS3, a few questions.

    Hi all,
    I have been developing AS3-only applications and am now looking into Flex. I have a few questions I would like to get more information on:
    - is there a difference in performance between the CS3 components and the Flex components? What would be the key differences between the two?
    - same question regarding drawing, is there a performance difference between drawing say, 10000 circles using pure AS3 and the same using mxml?
    I hope the question are not too broad and will appreciate any feedback!
    Thanks.

    FLex components are always more resource hungry due to the amount of stuff UIComponent has to do, like the
    component lifecycle.
    Although FXG drawing is pretty good.

  • Modal popup pure AS3

    I couldn't find any ready made solutions, so I had to work it out on my own.
    I borrowed ideas from developers, books, and Adobe documentation.
    Pure AS3, Flash Professional CS5.5, no Flex, no nothing.
    Two classes, Sprite based.
    Behaviour seemingly (but not really) modal.
    I don't see how to upload the zip here, so email me
    g_g_a_r_c_i_a_a at g_m_a_i_l dot c_o_m
    remove all _s
    Regards.

    I am offering a working solution for free.
    Ned: thanks for your remark. I realize that my post was misleading.
    I don't have any troubles with this particular code.
    I'm just offering the solution I worked out, one that is fairly acceptable for me, at least for starters.
    Should anyone be willing to give it a try, just email me, and I will send the files.

  • AS3 Self contained preloader - bytesTotal 0bytes issue

    Hi,
    I wrote a really basic preloader class using loaderInfo to preload my main swf. Problem is, that loaderInfo.bytesTotal returns 0.
    Does any one know how to handle this issue?
    BR,
    Kamil

    package {
    import flash.display.DisplayObject;
    import flash.display.Loader;
    import flash.display.LoaderInfo;
    import flash.display.MovieClip;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.display.StageQuality;
    import flash.display.Bitmap;
    import flash.display.Sprite;
    import flash.display.BlendMode;
    import flash.events.ErrorEvent;
    import flash.events.Event;
    import flash.events.IOErrorEvent;
    import flash.events.ProgressEvent;
    import flash.filters.BlurFilter;
    import flash.system.Security;
    Security.allowDomain("*");
    public class Preloader extends MovieClip {
    //preloading
    public var loaded_bytes:Number;
    public var total_bytes:Number;
    public var percent:Number;
    public function Preloader() {
    //listeners
    Security.allowDomain(loaderInfo.url);
    loaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);
    loaderInfo.addEventListener(Event.COMPLETE, onComplete);
    loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError);
    Preloading functions
    private function onProgress(e:ProgressEvent):void {
    loaded_bytes = e.bytesLoaded;
    total_bytes = e.bytesTotal;
    //if( total_bytes == 0 ) total_bytes = 1;
    percent = Math.floor(loaded_bytes / total_bytes * 100);
    private function onError(e:IOErrorEvent):void {
    trace(e);
    private function onComplete(e:Event):void {
    stop();
    trace("SWF Loaded");
    loaderInfo.removeEventListener(ProgressEvent.PROGRESS, onProgress);
          loaderInfo.removeEventListener(Event.COMPLETE, onComplete);

  • Help! - as3 IE preloader issues

    Ok,
    So, I work for the NPS, and they have an outdated CMS. I have no rights  to upload an .html file, or edit one that the CMS makes.
    SO, I am forced to use their little deal to display my .swf files.
    Problem:
    http://www.nps.gov/glca/photosmultimedia/ehikes.htm
    I made an eHike in as3 Flash CS4. It has two scenes, the first scene is  the preload, second is splash content and ehike content. The problem is I  cant get the preloader to display in IE. I have all actionscript  content exported to the second frame, as talked about here:
    http://www.senocular.com/flash/tutor...preloaderstart
    and it works fine in firefox.......
    GRRRR....
    I have tried many different ways to load the preloader..... Here is what  I'm currently using....
    there is a simple text field for the percentage, and a simple 100 frame  animation. preloader_mc
    stop();
    var preLoaderPercent:Number = 0;
    addEventListener(Event.ENTER_FRAME, loadComplete);
    function loadComplete(e:Event):void {
        if (this.loaderInfo.bytesLoaded == this.loaderInfo.bytesTotal) {
        removeEventListener(Event.ENTER_FRAME, loadComplete);
        this.loaderInfo.removeEventListener(Event.COMPLETE, loadComplete);
        this.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, loadProgress);
        gotoAndPlay("splash", "content");
    }//loadComplete
    this.loaderInfo.addEventListener(Event.COMPLETE, loadComplete);
    this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress);
    function loadProgress(e:ProgressEvent):void {
        preLoaderPercent = e.bytesLoaded / e.bytesTotal;
        load_txt.text = Math.ceil(preLoaderPercent * 100) + "%";
        var animstop:Number = Math.floor(preLoaderPercent*100);
        preloader_mc.gotoAndStop(animstop);
    The CMS lets you decide in the popup window if it is resizeable or not.  This works in IE (stopping people from resizing), but not in firefox,  people can resize it. Is there any way to disable the resize in AS3?  Again, I understand that your supposed to export the .html file with  these settings, but I have no permissions to upload or create new .html  files.
    Anyone who will help me with this - Thanks
    David

    The problem is talked about here:
    http://stackoverflow.com/questions/460677/serving-raw-swf-files-displays-in-firefox-but-no t-in-ie
    Solution was to preload with an external .swf
    Cheers

  • Spark components in pure AS3

    How do I use Spark components in Flex if I'm coding a pure Actionscript file? I want to use components like the Checkbox and NumericStepper in my project, but I'm not up to the task of learning MXML
    It seems that the addChild function doesn't add those components to the parent.

    Is your parent container a Flex control too? If so, then Flex componens are added using the .addElement() method of the parent. The parent needs to descend from the Group component to have this method, e.g. an Application, a View or similar. Info here:
    http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf62b90-7fe9.html
    Adding Flex components to a plain MovieClip in Flash CS5.5 is a lot more complicated, because Flex does a lot of work behind the scenes that you'd have to take over. Info here, esp. in the comments:
    http://seeing-is-believing.blogspot.com/2007/11/flex-components-in-flash-example-with.html
    MXML is actually quite easy once the penny drops, especially if you already know Flash/AS3, and makes  a lot of things much siimpler and quicker to implement.

Maybe you are looking for

  • HELP! I have 2 Apple ID's & I just realized the danger of it. And it wasn't my doing

    I'm typing to you from my ORIGINAL Apple .me account from "back in the day.  I didn't make the 2012 cut off date to move over to iCloud.  One day I had some time and contacted Apple. the rep. 'helped me' At the time I couldn't remember my password. I

  • Do I need a new battery?

    My MacBook is from 2007 and works great w.o being connected to the power source.  All of a sudden it will not turn on without being plugged in and it says 'replace battery now'.  Any better ideas than buying a new battery?  Do I really need a new bat

  • Connect iPod to a receiver

    I currently have my iPod connected to my home stereo reciever from the docks headphone jack and into the receiver's auxillary in. The sound is much lower and not near as good as anything else coming out of the receiver. The receiver has a USB input,

  • What is ECC6.0 and what are the business benefits by upgrading ?

    what are the Business Benefits of upgrading SAP R/3 4.7 to ECC6.0 , can some one explain in brief..? Thanks and Regards,

  • Can I import and export Camera Raw photos in Photos?

    I don't know where to ask this question because I don't see Photos listed in any of the Support Communities topics. I want to be able to import and export Camera Raw files in Photos. It only gives me the option to export in jpeg, tiff, or png formats