Hi all, thanks for taking the time to read this and help a newbie out.
I'm just getting my feet wet with AS3 as I've finally decided to
abandon the AS2 way of life.

I'm trying to use CustomOrientation.as, and I keep getting 3 errors in
my main .fla file, error 1180: Call to a possibly undefined method
addFramScript.

1067: Implicit coercion of a value of type Class to an unrelated type
flash.display.StageOrientation

5000: The class 'CustomOrientation' must subclass
'flash.display.MovieClip' since it is linked to a library symbol of
that type

In my main.fla file I call CustomOrientation and I have the line:  new
CustomOrientation(stage, true, true, false, false); in the code in the
first key frame, any help would be greatly appreciated.

/**
 * CustomOrientation.as
 *
 * Instructions:
 * In iPhone OS Settings, turn 'Auto orientation' ON and set your 'Aspect ratio'
 * to the opposite of the one you want to use. Also, use only
 * 'Default-Portrait.png'; if you want a landscape app, rotate your landscape
 * image 90 degrees clockwise and save as 'Default-Portrait.png'.
 *
 * Usage:
 * When you call the constructor, first pass in your stage, then either 'true'
 * or 'false' for each orientation in order:
 * 1 default, 2 upsideDown, 3 rotatedLeft, and 4 rotatedRight
 * You can listen for the 'CustomOrientation.INITIAL_ORIENTATION' event to
 * determine when the stage is set so that you can reveal the stage or remove
 * a black overlay.
 *
 * Example (landscape only):
 * new CustomOrientation(stage, false, false, true, true);
 *
 * Example (portrait only):
 * new CustomOrientation(stage, true, true, false, false);
 *
 * by cr0ybot
 * www.cr0ybot.com
 */

package  {

     import flash.events.Event;
     import flash.events.EventDispatcher;
     import flash.events.StageOrientationEvent;
     import flash.display.Stage;
     import flash.display.StageOrientation;
     import flash.display.StageAlign;
     import flash.display.StageScaleMode;
     import flash.utils.Dictionary;

     public class CustomOrientation extends EventDispatcher {

          public static const INITIAL_ORIENTATION:String = "initialOrientation";

          private var theStage:Stage;
          private var allowedOrients:Dictionary = new Dictionary();

          public function CustomOrientation(theStage:Stage,
defaultPortrait:Boolean = true, upsideDown:Boolean = true,
rotatedLeft:Boolean = true, rotatedRight:Boolean = true) {
               trace("AutoOrient class initialized; starting
orientation:", theStage.orientation);

               // store reference for the stage
               this.theStage = theStage;

               // dictionary object holds boolean for each orientation
               allowedOrients[StageOrientation.DEFAULT] = defaultPortrait;
               allowedOrients[StageOrientation.UPSIDE_DOWN] = upsideDown;
               allowedOrients[StageOrientation.ROTATED_LEFT] = rotatedLeft;
               allowedOrients[StageOrientation.ROTATED_RIGHT] = rotatedRight;

               theStage.scaleMode = StageScaleMode.NO_SCALE;
               theStage.align = StageAlign.TOP_LEFT;

               // listen for orientation changes and prevent unwanted ones
               
theStage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGING,
stageOrientationHandler, false, 0, true);

               // listen for the end of the first rotation, if there is one
               
theStage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE,
initialOrient, false, 0, true);

               // check the orientation at startup and respond if necessary
               checkCurrentOrientation();
          }

          private function checkCurrentOrientation():void {
               trace("checking initial orientation...");
               // if current orientation is not allowed, force rotate
               if (!allowedOrients[theStage.orientation]) {
                    trace(theStage.orientation, "not allowed.");
                    switch(theStage.orientation) {
                         case StageOrientation.DEFAULT :
                         case StageOrientation.UPSIDE_DOWN :

theStage.setOrientation(StageOrientation.ROTATED_RIGHT); // flash
default landscape orientation
                              trace("stage rotating to:",
StageOrientation.ROTATED_RIGHT);
                              break;
                         case StageOrientation.ROTATED_LEFT :
                         case StageOrientation.ROTATED_RIGHT :
                              theStage.setOrientation(StageOrientation.DEFAULT);
                              trace("stage rotating to:",
StageOrientation.DEFAULT);
                              break;
                    }
               } else { // if the orientation IS allowed, dispatch the event
                    trace(theStage.orientation, "allowed.");
                    dispatchOrientation();
               }
          }

          private function initialOrient(event:StageOrientationEvent):void {
               dispatchOrientation();
          }

          private function dispatchOrientation():void {
               trace("dispatching INITIAL_ORIENTATION event");

               // dispatch custom event; listen for
CustomOrientation.INITIAL_ORIENTATION
               this.dispatchEvent(new Event(INITIAL_ORIENTATION));

               // stop listening for the initial rotation
               
theStage.removeEventListener(StageOrientationEvent.ORIENTATION_CHANGE,
initialOrient);
          }

          private function
stageOrientationHandler(event:StageOrientationEvent):void {
               trace("stage attempting to rotate to:",
event.afterOrientation,"...");
               // if orientation is not allowed, prevent orientation change
               if (!allowedOrients[event.afterOrientation]) {
                    event.preventDefault();
                    trace("forcing stage to remain at:", theStage.orientation);
               } else {
                    trace("stage allowed to rotate to:",
event.afterOrientation);
               }
          }
     }
}
_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to