FrameLabel vs .currentLabel vs currentFrame

Hey people,
Quick question, i've run into an issue in AS3 where I can't seem to accurately acquire the frame number in a movieclip, my script is on the root/stage level and references my movieclip. I've tried using FrameLabel and currentFrame instead of how it is below where I'm making a variable using the currentLabel query and they all seem to give an incorrect answer when I get past the first frame, meaning it jumps back to frame 1. I figure there's some fundemental error in the terms I'm using but i'm not sure what other options I have. My script is below, any help or ideas would be great. Thanks!
next_btn.addEventListener(MouseEvent.CLICK, onwards);
function onwards(event:MouseEvent):void {
if (framenum < 5) {
pic.gotoAndPlay(nextFrame);
} else {
pic.gotoAndPlay(1);
var framenum = pic.currentLabel;
Thanks,
Allan

You have a couple of fundamental problems with your code.
First, you are defining the variable "framenum" outside of the function:
var framenum = pic.currentLabel;
Normally this is fine, and as it is this will work to give an initial value to the variable. However, you want this value to be updated when the function "onward" is called by the mouse click. So, a better place to put this definition is inside the function. That way, the value is updated every time the mouse is clicked and you will get the currentLabel, or currentFrame value that you want.
Second, you are telling the playback head to move to a new frame that is undefined, as far as I can see:
pic.gotoAndPlay(nextFrame);
You are using a variable named "nextFrame" to tell the playback head where to move to. This is undefined and so will never execute correctly. I'm guessing that what you really want to do is to move to the next frame in the clip "pic". If that's the case then you actually want to use the method nextFrame(). If that's the case then you want to use:
pic.nextFrame();
Try these two changes and see if you get what you want.

Similar Messages

  • Jump to appropriate frame of animation

    hi guys
    thanks for reading and here is the problem im facing
    i have a clock, and a background
    the background contains an animated ocean (100 frames)
    there are four sky themes which change on the appropriate hour to night-time, morning, sunset, sunrise (could just use alpha to show another here although maybe processor intensive)
    ok so the ocean could animate on its own and only the sky would need to change, that would be the easy part
    but when it gets to night-time the ocean needs to jump to the night-time version of itself
    so if the user presses the hour button, and the ocean is on daytime at frame 80, how would i say play night version at frame 81
    so that the ocean doesnt skip animation??
    thanks in advance
    fonzio

    TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at MethodInfo-307()
    at wholesite2_fla::gametwo_mc_65/hoursrules()
    at wholesite2_fla::gametwo_mc_65/frame1()
    at flash.display::MovieClip/gotoAndPlay()
    at wholesite2_fla::games_mc_39/frame3()
    at flash.display::MovieClip/gotoAndPlay()
    at MethodInfo-64()
    at flash.utils::Timer/_timerDispatch()
    at flash.utils::Timer/tick()
    hmm here is complete code im thinking that maybe some other code is conflicting:
    stop();
    import flash.display.FrameLabel;
    import flash.display.MovieClip;
    var mygame2timer:Timer;
    var mygame2timer2:Timer;
    var mycounter:Number=0;
    var correct:Number=0;
    var wrongtries:Number=0;
    var tries:Number=0;
    var hours:Number=12;
    var minutes:Number=00;
    ampm_txt.text=" PM";
    mytime_txt.text=(hours < 10 ? "0" : "")+hours + ":" + (minutes < 10 ? "0" : "") + minutes + ampm_txt.text;
    ampm_txt.visible=false;
    randomtime();
    //minutes_txt.text="00";
    hoursrules();
    //sea_mc.gotoAndPlay("daytime_sea");
    btns_mc.btn_min_less.buttonMode=true;
    btns_mc.btn_min_more.buttonMode=true;
    btns_mc.btn_5_min_less.buttonMode=true;
    btns_mc.btn_5_min_more.buttonMode=true;
    btns_mc.btn_10_min_less.buttonMode=true;
    btns_mc.btn_10_min_more.buttonMode=true;
    btns_mc.btn_15_min_less.buttonMode=true;
    btns_mc.btn_15_min_more.buttonMode=true;
    btns_mc.btn_30_min_less.buttonMode=true;
    btns_mc.btn_30_min_more.buttonMode=true;
    btns_mc.btn_hr_less.buttonMode=true;
    btns_mc.btn_hr_more.buttonMode=true;
    btns_mc.btn_check_mc.buttonMode=true;
    btns_mc.btn_min_less.mouseChildren=false;
    btns_mc.btn_min_more.mouseChildren=false;
    btns_mc.btn_5_min_less.mouseChildren=false;
    btns_mc.btn_5_min_more.mouseChildren=false;
    btns_mc.btn_10_min_less.mouseChildren=false;
    btns_mc.btn_10_min_more.mouseChildren=false;
    btns_mc.btn_15_min_less.mouseChildren=false;
    btns_mc.btn_15_min_more.mouseChildren=false;
    btns_mc.btn_30_min_less.mouseChildren=false;
    btns_mc.btn_30_min_more.mouseChildren=false;
    btns_mc.btn_hr_less.mouseChildren=false;
    btns_mc.btn_hr_more.mouseChildren=false;
    //button listeners
    btns_mc.btn_min_less.addEventListener(MouseEvent.CLICK, minless);
    btns_mc.btn_min_less.addEventListener(MouseEvent.MOUSE_OVER, minlessOver);
    btns_mc.btn_min_less.addEventListener(MouseEvent.MOUSE_OUT, minlessOut);
    btns_mc.btn_min_more.addEventListener(MouseEvent.CLICK, minmore);
    btns_mc.btn_min_more.addEventListener(MouseEvent.MOUSE_OVER, minmoreOver);
    btns_mc.btn_min_more.addEventListener(MouseEvent.MOUSE_OUT, minmoreOut);
    btns_mc.btn_5_min_less.addEventListener(MouseEvent.CLICK, fiveminless);
    btns_mc.btn_5_min_less.addEventListener(MouseEvent.MOUSE_OVER, fiveminlessOver);
    btns_mc.btn_5_min_less.addEventListener(MouseEvent.MOUSE_OUT, fiveminlessOut);
    btns_mc.btn_5_min_more.addEventListener(MouseEvent.MOUSE_OVER, fiveminmoreOver);
    btns_mc.btn_5_min_more.addEventListener(MouseEvent.MOUSE_OUT, fiveminmoreOut);
    btns_mc.btn_5_min_more.addEventListener(MouseEvent.CLICK, fiveminmore);
    btns_mc.btn_10_min_less.addEventListener(MouseEvent.CLICK, tenminless);
    btns_mc.btn_10_min_less.addEventListener(MouseEvent.MOUSE_OVER, tenminlessOver);
    btns_mc.btn_10_min_less.addEventListener(MouseEvent.MOUSE_OUT, tenminlessOut);
    btns_mc.btn_10_min_more.addEventListener(MouseEvent.CLICK, tenminmore);
    btns_mc.btn_10_min_more.addEventListener(MouseEvent.MOUSE_OVER, tenminmoreOver);
    btns_mc.btn_10_min_more.addEventListener(MouseEvent.MOUSE_OUT, tenminmoreOut);
    btns_mc.btn_15_min_less.addEventListener(MouseEvent.CLICK, fifteenminless);
    btns_mc.btn_15_min_less.addEventListener(MouseEvent.MOUSE_OVER, fifteenminlessOver);
    btns_mc.btn_15_min_less.addEventListener(MouseEvent.MOUSE_OUT, fifteenminlessOut);
    btns_mc.btn_15_min_more.addEventListener(MouseEvent.CLICK, fifteenminmore);
    btns_mc.btn_15_min_more.addEventListener(MouseEvent.MOUSE_OVER, fifteenminmoreOver);
    btns_mc.btn_15_min_more.addEventListener(MouseEvent.MOUSE_OUT, fifteenminmoreOut);
    btns_mc.btn_30_min_less.addEventListener(MouseEvent.CLICK, thirtyminless);
    btns_mc.btn_30_min_less.addEventListener(MouseEvent.MOUSE_OVER, thirtyminlessOver);
    btns_mc.btn_30_min_less.addEventListener(MouseEvent.MOUSE_OUT, thirtyminlessOut);
    btns_mc.btn_30_min_more.addEventListener(MouseEvent.CLICK, thirtyminmore);
    btns_mc.btn_30_min_more.addEventListener(MouseEvent.MOUSE_OVER, thirtyminmoreOver);
    btns_mc.btn_30_min_more.addEventListener(MouseEvent.MOUSE_OUT, thirtyminmoreOut);
    btns_mc.btn_hr_less.addEventListener(MouseEvent.CLICK, hrless);
    btns_mc.btn_hr_less.addEventListener(MouseEvent.MOUSE_OVER, hrlessOver);
    btns_mc.btn_hr_less.addEventListener(MouseEvent.MOUSE_OUT, hrlessOut);
    btns_mc.btn_hr_more.addEventListener(MouseEvent.CLICK, hrmore);
    btns_mc.btn_hr_more.addEventListener(MouseEvent.MOUSE_OVER, hrmoreOver);
    btns_mc.btn_hr_more.addEventListener(MouseEvent.MOUSE_OUT, hrmoreOut);
    btns_mc.btn_check_mc.addEventListener(MouseEvent.CLICK, checker);
    //button functions
    function minlessOver(event:MouseEvent):void {
    btns_mc.btn_min_less.gotoAndPlay("minover");
    function minlessOut(event:MouseEvent):void {
    btns_mc.btn_min_less.gotoAndStop("minout");
    function minmoreOver(event:MouseEvent):void {
    btns_mc.btn_min_more.gotoAndPlay("minover");
    function minmoreOut(event:MouseEvent):void {
    btns_mc.btn_min_more.gotoAndStop("minout");
    function fiveminlessOver(event:MouseEvent):void {
    btns_mc.btn_5_min_less.gotoAndPlay("minover");
    function fiveminlessOut(event:MouseEvent):void {
    btns_mc.btn_5_min_less.gotoAndStop("minout");
    function fiveminmoreOver(event:MouseEvent):void {
    btns_mc.btn_5_min_more.gotoAndPlay("minover");
    function fiveminmoreOut(event:MouseEvent):void {
    btns_mc.btn_5_min_more.gotoAndStop("minout");
    function tenminlessOver(event:MouseEvent):void {
    btns_mc.btn_10_min_less.gotoAndPlay("minover");
    function tenminlessOut(event:MouseEvent):void {
    btns_mc.btn_10_min_less.gotoAndStop("minout");
    function tenminmoreOver(event:MouseEvent):void {
    btns_mc.btn_10_min_more.gotoAndPlay("minover");
    function tenminmoreOut(event:MouseEvent):void {
    btns_mc.btn_10_min_more.gotoAndStop("minout");
    function fifteenminlessOver(event:MouseEvent):void {
    btns_mc.btn_15_min_less.gotoAndPlay("minover");
    function fifteenminlessOut(event:MouseEvent):void {
    btns_mc.btn_15_min_less.gotoAndStop("minout");
    function fifteenminmoreOver(event:MouseEvent):void {
    btns_mc.btn_15_min_more.gotoAndPlay("minover");
    function fifteenminmoreOut(event:MouseEvent):void {
    btns_mc.btn_15_min_more.gotoAndStop("minout");
    function thirtyminlessOver(event:MouseEvent):void {
    btns_mc.btn_30_min_less.gotoAndPlay("minover");
    function thirtyminlessOut(event:MouseEvent):void {
    btns_mc.btn_30_min_less.gotoAndStop("minout");
    function thirtyminmoreOver(event:MouseEvent):void {
    btns_mc.btn_30_min_more.gotoAndPlay("minover");
    function thirtyminmoreOut(event:MouseEvent):void {
    btns_mc.btn_30_min_more.gotoAndStop("minout");
    function hrlessOver(event:MouseEvent):void {
    btns_mc.btn_hr_less.gotoAndPlay("minover");
    function hrlessOut(event:MouseEvent):void {
    btns_mc.btn_hr_less.gotoAndStop("minout");
    function hrmoreOver(event:MouseEvent):void {
    btns_mc.btn_hr_more.gotoAndPlay("minover");
    function hrmoreOut(event:MouseEvent):void {
    btns_mc.btn_hr_more.gotoAndStop("minout");
    //clicks
    function minless(event:MouseEvent):void {
    minuteHand_mc.rotation-=6;
    if (minutes<1) {
      minutes=minutes+59;
      hourHand_mc.rotation-=30;
      hours=hours-=1;
    } else {
      minutes=minutes-1;
    if (hours<1) {
      hours=hours+24;
    hoursrules();
    function minmore(event:MouseEvent):void {
    minuteHand_mc.rotation+=6;
    if (minutes>=59) {
      minutes=minutes-59;
      hourHand_mc.rotation+=30;
      hours=hours+=1;
    } else {
      minutes=minutes+1;
    if (hours==0) {
      hours=hours+12;
    if (hours>24) {
      hours=hours-24;
    hoursrules();
    function fiveminless(event:MouseEvent):void {
    minuteHand_mc.rotation-=30;
    if (minutes<5) {
      minutes=minutes+55;
      hours=hours-=1;
      hourHand_mc.rotation-=30;
    } else {
      minutes=minutes-5;
    if (hours<1) {
      hours=hours+24;
    hoursrules();
    function fiveminmore(event:MouseEvent):void {
    minuteHand_mc.rotation+=30;
    if (minutes>=55) {
      hourHand_mc.rotation+=30;
      hours=hours+=1;
      minutes=minutes-55;
    } else {
      minutes=minutes+5;
    if (hours==0) {
      hours=hours+12;
    if (hours>24) {
      hours=hours-24;
    hoursrules();
    function tenminless(event:MouseEvent):void {
    minuteHand_mc.rotation-=60;
    if (minutes<10) {
      minutes=minutes+50;
      hours=hours-=1;
      hourHand_mc.rotation-=30;
    } else {
      minutes=minutes-10;
    if (hours<1) {
      hours=hours+24;
    hoursrules();
    function tenminmore(event:MouseEvent):void {
    minuteHand_mc.rotation+=60;
    if (minutes>=50) {
      hourHand_mc.rotation+=30;
      hours=hours+=1;
      minutes=minutes-50;
    } else {
      minutes=minutes+10;
    if (hours==0) {
      hours=hours+12;
    if (hours>24) {
      hours=hours-24;
    hoursrules();
    function fifteenminless(event:MouseEvent):void {
    minuteHand_mc.rotation-=90;
    if (minutes<15) {
      minutes=minutes+45;
      hours=hours-=1;
      hourHand_mc.rotation-=30;
    } else {
      minutes=minutes-15;
    if (hours<1) {
      hours=hours+24;
    hoursrules();
    function fifteenminmore(event:MouseEvent):void {
    minuteHand_mc.rotation+=90;
    if (minutes>=45) {
      hourHand_mc.rotation+=30;
      hours=hours+=1;
      minutes=minutes-45;
    } else {
      minutes=minutes+15;
    if (hours==0) {
      hours=hours+12;
    if (hours>24) {
      hours=hours-24;
    hoursrules();
    function thirtyminless(event:MouseEvent):void {
    minuteHand_mc.rotation-=180;
    if (minutes<30) {
      hourHand_mc.rotation-=30;
      hours=hours-=1;
      minutes=minutes+30;
    } else {
      minutes=minutes-30;
    if (hours<1) {
      hours=hours+24;
    hoursrules();
    function thirtyminmore(event:MouseEvent):void {
    minuteHand_mc.rotation+=180;
    if (minutes>=30) {
      hourHand_mc.rotation+=30;
      hours=hours+=1;
      minutes=minutes-30;
    } else {
      minutes=minutes+30;
    if (hours==0) {
      hours=hours+12;
    if (hours>24) {
      hours=hours-24;
    hoursrules();
    function hrless(event:MouseEvent):void {
    hourHand_mc.rotation-=30;
    hours--;
    if (hours<1) {
      hours=hours+24;
    hoursrules();
    function hrmore(event:MouseEvent):void {
    hourHand_mc.rotation+=30;
    hours++;
    if (hours>24) {
      hours=hours-24;
    hoursrules();
    function hoursrules():void {
    checkPhase(hours);
    if (hours<12) {
      ampm_txt.text=" AM";
    if (hours>12) {
      ampm_txt.text=" PM";
    if (hours==24) {
      ampm_txt.text=" AM";
    if (hours==12) {
      ampm_txt.text=" PM";
    const PHASES:Array = [
        hour: 19,
        label: "nighttime_sea"
        hour: 17,
        label: "sunset_sea"
        hour: 8,
        label: "daytime_sea"
        hour: 6,
        label: "dawn_sea"
        hour: 24,
        label: "nighttime_sea"
    // you call this function whenewer you want to test hour and possibly change day time
    function checkPhase(hour:Number):void {
      for(var i:int = 0; i < PHASES.length; i++) {
        if(PHASES[i].hour < hour) {
          showPhase(PHASES[i].label);
          return;
      trace("Something went wrong, this line shouldn't execute.")
    function showPhase(phase:String):void {
      if(phase == sea_mc.currentLabel) return;
      var currentPhaseStart:int = getLabelFrameNumber(sea_mc.currentLabel);
      var frameOffset:int = sea_mc.currentFrame - currentPhaseStart;
      var newPhaseStart:int = getLabelFrameNumber(phase);
      sea_mc.gotoAndPlay(newPhaseStart + frameOffset);
    function getLabelFrameNumber(target:MovieClip, label:String):int {
        var index:int = getLabelIndex(target, label);
        if (index == -1) return -1;
        return FrameLabel(target.currentLabels[index]).frame;
    function getLabelIndex(target:MovieClip, label:String):int {
        for (var i:int = 0; i < target.currentLabels.length; i++) {
            if (FrameLabel(target.currentLabels[i]).name == label) {
                return i;
        return -1;
    mytime_txt.text=(hours < 10 ? "0" : "")+hours + ":" + (minutes < 10 ? "0" : "") + minutes+ (ampm_txt.text);
    // create an Array with numbers 0:00 - 23:59 in minutes, then randomise it
    //mytimes_txt.text = mytime_txt.text
    function randomtime():void {
    function generateRandomTimeList():Array {
      var array:Array = new Array();
      for (var i:uint = 0, end:uint = 60*24 - 1; i < end; i++) {
       array.push(i);
      return myarray(array);
    // Array randomising algorithm       
    function myarray(a:Array):Array {
      var b:Array=new Array(a.length);
      b[0]=a[0];
      for (var i:uint = 1, n:uint = a.length; i < n; i++) {
       var j:uint=Math.round(Math.random()*i);
       b[i]=b[j];
       b[j]=a[i];
      return b;
    // convert number to time formatted string  
    function timeFormat(n:uint):String {
      var hour:uint=Math.floor(n/60);
      var minute:uint=n-hour*60;
      return (hour == 0 ? 24 : hour < 10 ? "0" : "") +hour + ":"  + (minute < 10 ? "0" : "") + minute+ (randomTimeList[i] < 60*12 ? " AM" : " PM");
    // trace 10 random time
    var randomTimeList:Array=generateRandomTimeList();
    for (var i:uint = 0; i < 1; i++) {
      myrandomtime_txt.text=(timeFormat(randomTimeList[i]));
    //on btn
    function checker(event:MouseEvent):void {
    if (mytime_txt.text==myrandomtime_txt.text) {
      MovieClip(parent.parent).e_mc.cap_talk_txt.text="Well Done!!";
      clockreset();
      // true or false
    } else {
      hours=12;
      minutes=00;
      ampm_txt.text=" PM";
      mytime_txt.text=(hours < 10 ? "0" : "")+hours + ":" + (minutes < 10 ? "0" : "") + minutes+ ampm_txt.text;
      hourHand_mc.rotation=0;
      minuteHand_mc.rotation=0;
      MovieClip(parent.parent).e_mc.cap_talk_txt.text="Wrong try again!";
      MovieClip(parent.parent).scoreminus();
      sea_mc.gotoAndPlay("daytime_sea");
      randomtime();
      wrongtries++;
      tries++;
      mycounter++;
    function clockreset():void {
      hours=12;
      minutes=00;
      ampm_txt.text=" PM";
      mytime_txt.text=(hours < 10 ? "0" : "")+hours + ":" + (minutes < 10 ? "0" : "") + minutes + ampm_txt.text;
      hourHand_mc.rotation=0;
      minuteHand_mc.rotation=0;
      randomtime();
      MovieClip(parent.parent).scoreplus();
      sea_mc.gotoAndPlay("daytime_sea");
      correct++;
      mycounter++;
    if (tries==3) {
      MovieClip(parent.parent).e_mc.cap_talk_txt.text="Click  "+"            "+"for instructions!";
      MovieClip(parent.parent).e_mc.helpicon_mc.visible=true;
      tries=tries-3;
    } else {
      MovieClip(parent.parent).e_mc.helpicon_mc.visible=false;
    if (mycounter==5) {
      removegame2listeners();
      if (correct>wrongtries) {
       MovieClip(parent.parent).e_mc.helpicon_mc.visible=false;
       MovieClip(parent.parent).e_mc.cap_talk_txt.text="Well done, you got "+correct+" correct and "+wrongtries+" wrong this round, lets see how you do in the next game!!";
       endgame();
      if (correct<wrongtries) {
       MovieClip(parent.parent).e_mc.helpicon_mc.visible=false;
       MovieClip(parent.parent).e_mc.cap_talk_txt.text="Hmm not bad, you got "+correct+" correct and "+wrongtries+" wrong this round, lets see how you do in the next game!!";
       endgame();
      function endgame():void {
       mygame2timer=new Timer(5000,1);
       mygame2timer.addEventListener(TimerEvent.TIMER, mygame2timerdone);
       mygame2timer.start();
       function mygame2timerdone(e:TimerEvent):void {
        MovieClip(parent.parent).e_mc.gotoAndPlay("explan_out");
        mygame2timer.stop();
        mygame2timer.removeEventListener(TimerEvent.TIMER, mygame2timerdone);
        mygame2timer2=new Timer(5000,1);
        mygame2timer2.addEventListener(TimerEvent.TIMER, mygame2timer2done);
        mygame2timer2.start();
        function mygame2timer2done(e:TimerEvent):void {
         mygame2timer2.stop();
         mygame2timer2.removeEventListener(TimerEvent.TIMER, mygame2timer2done);
         MovieClip(parent).gotoAndPlay("intro");
    function removegame2listeners():void {
    btns_mc.btn_min_less.removeEventListener(MouseEvent.CLICK, minless);
    btns_mc.btn_min_less.removeEventListener(MouseEvent.MOUSE_OVER, minlessOver);
    btns_mc.btn_min_less.removeEventListener(MouseEvent.MOUSE_OUT, minlessOut);
    btns_mc.btn_min_more.removeEventListener(MouseEvent.CLICK, minmore);
    btns_mc.btn_min_more.removeEventListener(MouseEvent.MOUSE_OVER, minmoreOver);
    btns_mc.btn_min_more.removeEventListener(MouseEvent.MOUSE_OUT, minmoreOut);
    btns_mc.btn_5_min_less.removeEventListener(MouseEvent.CLICK, fiveminless);
    btns_mc.btn_5_min_less.removeEventListener(MouseEvent.MOUSE_OVER, fiveminlessOver);
    btns_mc.btn_5_min_less.removeEventListener(MouseEvent.MOUSE_OUT, fiveminlessOut);
    btns_mc.btn_5_min_more.removeEventListener(MouseEvent.MOUSE_OVER, fiveminmoreOver);
    btns_mc.btn_5_min_more.removeEventListener(MouseEvent.MOUSE_OUT, fiveminmoreOut);
    btns_mc.btn_5_min_more.removeEventListener(MouseEvent.CLICK, fiveminmore);
    btns_mc.btn_10_min_less.removeEventListener(MouseEvent.CLICK, tenminless);
    btns_mc.btn_10_min_less.removeEventListener(MouseEvent.MOUSE_OVER, tenminlessOver);
    btns_mc.btn_10_min_less.removeEventListener(MouseEvent.MOUSE_OUT, tenminlessOut);
    btns_mc.btn_10_min_more.removeEventListener(MouseEvent.CLICK, tenminmore);
    btns_mc.btn_10_min_more.removeEventListener(MouseEvent.MOUSE_OVER, tenminmoreOver);
    btns_mc.btn_10_min_more.removeEventListener(MouseEvent.MOUSE_OUT, tenminmoreOut);
    btns_mc.btn_15_min_less.removeEventListener(MouseEvent.CLICK, fifteenminless);
    btns_mc.btn_15_min_less.removeEventListener(MouseEvent.MOUSE_OVER, fifteenminlessOver);
    btns_mc.btn_15_min_less.removeEventListener(MouseEvent.MOUSE_OUT, fifteenminlessOut);
    btns_mc.btn_15_min_more.removeEventListener(MouseEvent.CLICK, fifteenminmore);
    btns_mc.btn_15_min_more.removeEventListener(MouseEvent.MOUSE_OVER, fifteenminmoreOver);
    btns_mc.btn_15_min_more.removeEventListener(MouseEvent.MOUSE_OUT, fifteenminmoreOut);
    btns_mc.btn_30_min_less.removeEventListener(MouseEvent.CLICK, thirtyminless);
    btns_mc.btn_30_min_less.removeEventListener(MouseEvent.MOUSE_OVER, thirtyminlessOver);
    btns_mc.btn_30_min_less.removeEventListener(MouseEvent.MOUSE_OUT, thirtyminlessOut);
    btns_mc.btn_30_min_more.removeEventListener(MouseEvent.CLICK, thirtyminmore);
    btns_mc.btn_30_min_more.removeEventListener(MouseEvent.MOUSE_OVER, thirtyminmoreOver);
    btns_mc.btn_30_min_more.removeEventListener(MouseEvent.MOUSE_OUT, thirtyminmoreOut);
    btns_mc.btn_hr_less.removeEventListener(MouseEvent.CLICK, hrless);
    btns_mc.btn_hr_less.removeEventListener(MouseEvent.MOUSE_OVER, hrlessOver);
    btns_mc.btn_hr_less.removeEventListener(MouseEvent.MOUSE_OUT, hrlessOut);
    btns_mc.btn_hr_more.removeEventListener(MouseEvent.CLICK, hrmore);
    btns_mc.btn_hr_more.removeEventListener(MouseEvent.MOUSE_OVER, hrmoreOver);
    btns_mc.btn_hr_more.removeEventListener(MouseEvent.MOUSE_OUT, hrmoreOut);
    btns_mc.btn_check_mc.removeEventListener(MouseEvent.CLICK, checker);
    btns_mc.btn_min_less.buttonMode=false;
    btns_mc.btn_min_more.buttonMode=false;
    btns_mc.btn_5_min_less.buttonMode=false;
    btns_mc.btn_5_min_more.buttonMode=false;
    btns_mc.btn_10_min_less.buttonMode=false;
    btns_mc.btn_10_min_more.buttonMode=false;
    btns_mc.btn_15_min_less.buttonMode=false;
    btns_mc.btn_15_min_more.buttonMode=false;
    btns_mc.btn_30_min_less.buttonMode=false;
    btns_mc.btn_30_min_more.buttonMode=false;
    btns_mc.btn_hr_less.buttonMode=false;
    btns_mc.btn_hr_more.buttonMode=false;
    btns_mc.btn_check_mc.buttonMode=false;
    hope you can help
    thanks
    fonzio

  • For loop doesn't stop at any point

    public function getLabel(jail):String
           var frameLabel:String = mc.currentLabel;
          for(var i=0; i<jail.currentLabels.length; i++)
                 if(jail.currentLabel == jail.currentLabels[i].name)
                       trace(jail.currentLabels[i].name);
                     if(mc.currentLabels[i] != undefined)
                             frameLabel = mc.currentLabels[i+1].name;
                      else
                            frameLabel = mc.currentLabel;
           return frameLabel;

    if you want to stop the loop if you get a match, use:
    public function getLabel(jail):String
           var frameLabel:String = mc.currentLabel;
          for(var i=0; i<jail.currentLabels.length; i++)
                 if(jail.currentLabel == jail.currentLabels[i].name)
                       trace(jail.currentLabels[i].name);
                     if(mc.currentLabels[i] != undefined)
                             frameLabel = mc.currentLabels[i+1].name;
                      else
                            frameLabel = mc.currentLabel;
           return frameLabel;
           return frameLabel;

  • "Property currentLabel not found on String"

    This is the error message I keep getting with the following setup:
    I have several button instances onstage named "1gun", "2gun", "3gun" and so on.
    There are also several button instances onstage named "1bullseye","2bullseye" and so on.
    When I use this code and click on a button containing an index of gun,it returns the number preceding the string "gun", just as I want it to do.:
    {trace (e.currentTarget.name.slice(0,1))}
    When I use this code and click on a gun button, it returns  the name of the "bullseye" button that corresponds with the "gun": button:
    {trace ("bullseye" + e.currentTarget.name.slice(0,1))}
    However, when I use this code, I get the output error in the title of this thread:
    {trace("bullseye" + e.currentTarget.name.slice(0,1).currentLabel)}
    Property currentLabel not found on String and there is no default value.
    The code is intended to trace the current frame of a bullseye when the corresponding gun is clicked. So if "1gun" is clicked, it would trace the currentFrame of "1bullseye".
    Any ideas about why this isn't working?

    The following is just a String, which does not have a property named currentLabel...
    "bullseye" + e.currentTarget.name.slice(0,1)
    If there is a MovieClip that has an instance name of bullseye#  (where # is some number), then you need to use bracket notation to have that String interpretted as an instance of an object....
    {trace(this[ "bullseye" + e.currentTarget.name.slice(0,1)].currentLabel)}

  • Framelabel detection

    I am need of a document class that checks the timeline of
    many movieclips for certain framelabels. The movieClips are located
    on MovieClip(root). Could someone please guide me through this or
    point me in the right direction if it is possible? I know I could
    just attach the class to each MC, but there are hundreds of them.
    Thanks,
    -Jake

    movieclips have a currentLabels property that returns an
    array of frame labels for that movieclip.
    if your movieclips exist when you want to check their labels,
    you should have no problem using this property.

  • Example from the SDK. How to check in FrameLabelUI whether plugin FrameLabel.pln exists?

    Hi all, I have problem. I want check in FrameLabelUI, whether dependency plugin file FrameLabel.pln is exists. If FrameLabel.pln exists, plugin FrameLabelUI display messagebox "plugin framelabel exists" else if FrameLabel.pln not exists, plugin FrameLabelUI display messagebox "plugin framelabel.pln not found!".

    did you try the following?
    resource PluginDependency(kSDKDefPluginDependencyResourceID)
        kWildFS
            kFrmLblPluginID,
            kFrmLblUIPluginName,
            kSDKDefPlugInMajorVersionNumber,
         kSDKDefPlugInMinorVersionNumber,
            kAnotherPluginID,
            kAnotherPluginName,
            kSDKDefPlugInMajorVersionNumber,
         kSDKDefPlugInMinorVersionNumber,
    Or add PluginDependency with another resourceID.
    Markus

  • CurrentFrame command not working with Else/If statement?

    The code below is part of a game in which the character moves through doors. On the current stage are three doors, all
    instances from the same symbol. The symbol contains nine frames- 1,2 and 3 are three doors of three diff colors doors. 21,22, and 23 are those same three doors with a certain power up and 31,32 and 33 are the same doors with yet another power up.
    Door1.addEventListener(MouseEvent.CLICK,dooraction);
                    function dooraction(event:MouseEvent){
        if (Door3.currentFrame ==Door1.currentFrame + 2 ) {
                  Door1.gotoAndStop(" door21");
                  Door2.gotoAndStop(" door22");
                  Door3.gotoAndStop(" door23");
    So, this code as written works fine, When I add the code below, it stops working.
         else if (Door3.currentframe == Door1.currentFrame +2){
                 Door1.gotoAndStop("door31");
                 Door2.gotoAndStop("door32");
                 Door3.gotoAndStop("door33");
    However, when I alter the code so that all of the code in the first part  gotoAndStop's at "door21", and then remove the "+2 " from the
    second part of the code, it works. What have I done incorrectly that causes the second "+2" to not work?

    the else-if branch of your conditional is identical to the if-branch so i wouldn't expect the else-if branch to ever execute.

  • Cannot find framelabel Start in Scene 6

    When i am running my program, this pops up in the output:
    "Cannot find framelabel Start in Scene 6"
    This is my code:
    //The speed of the scroll movement.
    var scrollSpeed:uint = 1;
    //This adds two instances of the movie clip onto the stage.
    var s1:ScrollBg = new ScrollBg();
    var s2:ScrollBg = new ScrollBg();
    addChild(s1);
    addChild(s2);
    //This positions the second movieclip next to the first one.
    s1.x = 0;
    s2.x = s1.width;
    //Adds an event listener to the stage.
    stage.addEventListener(Event.ENTER_FRAME, moveScroll);
    //This function moves both the images to left. If the first and second
    //images goes pass the left stage boundary then it gets moved to
    //the other side of the stage.
    function moveScroll(e:Event):void{
    s1.x -= scrollSpeed; 
    s2.x -= scrollSpeed; 
    if(s1.x < -s1.width){
    s1.x = s1.width;
    }else if(s2.x < -s2.width){
    s2.x = s2.width;
    var isRight:Boolean=false
    var isLeft:Boolean=false
    var isUp:Boolean=false
    var isDown:Boolean=false
    var xspeed:Number=0
    var yspeed:Number=0
    var maxspeed:Number=8
    var accel:Number=0.5
    stage.addEventListener(KeyboardEvent.KEY_DOWN, downKey);
    function downKey(event:KeyboardEvent){
    if(event.keyCode==39){
    isRight=true}
    if(event.keyCode==37){
    isLeft=true}
    if(event.keyCode==38){
    isUp=true}
    if(event.keyCode==40){
    isDown=true}
    stage.addEventListener(KeyboardEvent.KEY_UP, upKey);
    function upKey(event:KeyboardEvent){
    if(event.keyCode==39){
    isRight=false}
    if(event.keyCode==37){
    isLeft=false}
    if(event.keyCode==38){
    isUp=false}
    if(event.keyCode==40){
    isDown=false}
    stage.addEventListener(Event.ENTER_FRAME, loop);
    function loop(Event){
    // if right is pressed and speed didnt hit the limit, increase speed
    if(isRight==true && xspeed<maxspeed){xspeed+=2}
    // if left is pressed and speed didnt hit the limit, increase speed (the other way)
    if(isLeft==true && xspeed>-maxspeed){xspeed-=2}
    // if speed is more than 0, decrease
    if(xspeed>0){xspeed-=accel}
    // if speed is less than 0, increase
    if(xspeed<0){xspeed+=accel}
    // just like x, but with y
    if(isDown==true && yspeed<maxspeed){yspeed+=2}
    if(isUp==true && yspeed>-maxspeed){yspeed-=2}
    if(yspeed>0){yspeed-=accel}
    if(yspeed<0){yspeed+=accel}
    // apply speed to movieclip
    mc.x+=xspeed
    mc.y+=yspeed
    // managing the walls
    if(mc.x<30 && xspeed<0){mc.x=30}
    if(mc.x>470 && xspeed>0){mc.x=470}
    if(mc.y<30 && yspeed<0){mc.y=30}
    if(mc.y>370 && yspeed>0){mc.y=370}
    gotoAndPlay("Scene 6");
    How do i fix this?

    I do not see a line of code in your original code that calls for a frame labeled "Start"  If there is one, can you highlight where it is?  The only line I see involving Scene 6 is...
    gotoAndPlay("Scene 6");
    The correct usage of the gotoAndPlay function is: gotoAndPlay(frame, scene); where if you are not using scenes (which is better) you can limit it to be gotoAndPlay(frame).
    So if you have a frame labeled "Start" in "Scene 6" then the correct command to get there will be...
    gotoAndPlay("Start", "Scene 6");

  • GetChildAt(i).currentLabel doesn't do it

    I know I am missing something simple here.
    Why does
    fridge.currentLabel
    return the correct value but if I make reference to it as
    getChildAt(1).currentLabel
    I get the error message
    1119: Access of possibly undefined property currentLabel through a reference with static type flash.display:DisplayObject.

    the compiler's sometimes stupid.  (or, you screwed up.)
    to check which, try:
    MovieClip(getChildAt(1)).currentLabel

  • MovieClip.currentFrame traces to a different frame than it's displaying

    I have a movieclip on the stage with 3 frames. Each frame has a stop(); in the actions layer. I have double (and triple and quadruple) checked the label names.
    There is a button to toggle between the three frames of the movie clip. A Frame 1 button, a Frame 2 button, and a Frame 3 button. The movie clip (there are lots of them) is then spawned with a mouse click. The movie clips are already declared at the beginng. They are not unlimited so I can just have a for loop go through all of them and change the frame number even before they are spawned and added to the display list.
    Frame 2 and Frame 3 work just fine. But the button to go to Frame 1 will display Frame 1 on all of the pieces that are already on the stage, but on all new pieces that will be spawned, it just displays whatever other button was pressed last. For instance if I have a movie clip on the stage that's displaying Frame 2 and I hit the buttom for Frame 1, the movie clip will switch to Frame 1. But if I spawn a new movie clip, it will display Frame 2. If I then click back on the Frame 2 button and then again to Frame 1, the movie clip will correct itself.
    I can't find where on earth in the code it's going wrong. I've tried using traces but I can't find any problems or inconsistencies. Everywhere I put a trace to tell me what frame the object is at, it traces correctly. I'll click on Frame 1 button, then click on the stage, and it will trace to the output menu that the current spawned movie clip is on Frame 1 when it's very clearly displaying Frame 2.
    Does that make any sense?
    Here is the code that spawns the movie clip:
    function addNewPiece (e:MouseEvent): void {
        ri = Math.floor(Math.random()*(1+PuzzleGlobals.TOTAL_NUMBER_USA));
        if (PuzzleGlobals.statesOnBoardUSA == PuzzleGlobals.TOTAL_NUMBER_USA) {
            //play BOOP sound indicating no new pieces left
        else {
            if (usaPiece[ri] != null) {
                bmc.addChild(this[usaPiece[ri]]); //bmc is the blank movie clip all new spawns are attached to
                    trace (this[usaPiece[ri]].currentFrame + this[usaPiece[ri]].currentFrameLabel); // 1shape, but displaying 2
                if (PuzzleGlobals.currentLevel == "Shape") {
                    trace (this[usaPiece[ri]].currentFrame + this[usaPiece[ri]].currentFrameLabel); // 1shape, but displaying 2
                    this[usaPiece[ri]].height = this[usaPuzzle[ri]].height; //this is to match the size of the puzzle pieces
                    this[usaPiece[ri]].width = this[usaPuzzle[ri]].width;
                this[usaPiece[ri]].x = e.stageX;
                this[usaPiece[ri]].y = e.stageY;
                usaPiece[ri] = null;
                PuzzleGlobals.statesOnBoardUSA++;
            else {
                addNewPiece(e);
    Here is the code for the button switches:
    nameLevel.addEventListener(MouseEvent.CLICK, changeLevel);
    abbrevLevel.addEventListener(MouseEvent.CLICK, changeLevel);
    shapeLevel.addEventListener(MouseEvent.CLICK, changeLevel);
    function changeLevel (e:MouseEvent): void {
        trackUSAPiece = ["pieceAL", "pieceAK", "pieceAZ", "pieceAR", "pieceCA", "pieceCO", "pieceCT", "pieceDE", "pieceFL", "pieceGA", "pieceHI", "pieceID", "pieceIL", "pieceIN", "pieceIA", "pieceKS", "pieceKY", "pieceLA", "pieceME", "pieceMD", "pieceMA", "pieceMI", "pieceMN", "pieceMS", "pieceMO", "pieceMT", "pieceNE", "pieceNV", "pieceNH", "pieceNJ", "pieceNM", "pieceNY", "pieceNC", "pieceND", "pieceOH", "pieceOK", "pieceOR", "piecePA", "pieceRI", "pieceSC", "pieceSD", "pieceTN", "pieceTX", "pieceUT", "pieceVT", "pieceVA", "pieceWA", "pieceWV", "pieceWI", "pieceWY"]
        if (e.target == nameLevel) {
            PuzzleGlobals.currentLevel = "Name";
            nameLevel.gotoAndStop("Active"); //change appearance of the buttons
            abbrevLevel.gotoAndStop("Inactive");
            shapeLevel.gotoAndStop("Inactive");
            for (var j=0; j<(PuzzleGlobals.TOTAL_NUMBER_USA); j++) { //make all declared movie clips go to the right frame
                this[trackUSAPiece[j]].gotoAndStop("wholeName");
        else if (e.target == abbrevLevel) {
            PuzzleGlobals.currentLevel = "Abbrev";
            abbrevLevel.gotoAndStop("Active");
            nameLevel.gotoAndStop("Inactive");
            shapeLevel.gotoAndStop("Inactive");
            for (var k=0; k<(PuzzleGlobals.TOTAL_NUMBER_USA); k++) {
                this[trackUSAPiece[k]].gotoAndStop("abbrev");
        else if (e.target == shapeLevel) {
            PuzzleGlobals.currentLevel = "Shape";
            shapeLevel.gotoAndStop("Active");
            nameLevel.gotoAndStop("Inactive");
            abbrevLevel.gotoAndStop("Inactive");
            for (var l=0; l<(PuzzleGlobals.TOTAL_NUMBER_USA); l++) {
                this[trackUSAPiece[l]].gotoAndStop("shape");
    Thanks so much!
    Amber

    Bug report here in case someone thinks they know what's wrong
    https://bugbase.adobe.com/index.cfm?event=bug&id=2953829

  • External SWF currentframe : Problem

    I have a movieclip that loads and plays an external SWF into it.
    Is there anyway to know the current frame number of the external swf so that I can use it to drag the movie progress bar.
    Note: I cannot edit the external swf's. They are just simple and static movies.
    It's urgent, please help.
    Thanks

    you can determine the current frame of any timeline in the external swf.  for example, if you want to know the current frame of the main timeline and you're using as2, use:
    targetMC._currentframe;  // where targetMC is the movieclip into which your external swf was loaded.
    in as3:
    MovieClip(ldr.content).currrentFrame;  // where ldr is the loader that loaded your external swf.

  • Opera returns wrong currentframe

    hi
    actionscript 2.0
    When running this code in IE7, it works, it return the
    correct frameid. But when testing on Opera 9.x it only return 19.
    19 isn't a keyframe in the flash movie. The keyframes are: 1, 10,
    20, 30, 40, 50.. No matter what frame is used in the flash movie,
    it returns 19
    what's wrong with my code?
    here is my code
    <object
    classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="
    http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0"
    width="960" height="108">
    <param id="Param1" name="movie" value="../Flash/test.swf"
    />
    <param name="allowScriptAccess" value="sameDomain" />
    <param name="allowFullScreen" value="false" />
    <param name="movie" value="../Flash/test.swf" />
    <param name="FlashVars" value="frameid=world" />
    <embed src="../Flash/test.swf" width="960"
    FlashVars="frameid=world" height="108"
    allowScriptAccess="sameDomain" allowFullScreen="false"
    type="application/x-shockwave-flash" pluginspage="
    http://www.adobe.com/go/getflashplayer"></embed>
    </object>
    <body onload="getFrame()">
    <form id="form1" runat="server">
    <div>
    <script type="text/javascript">
    function getFrame(str) {
    var div=document.getElementById("LeftPanel")
    alert(str);
    if (str == "10")
    div.style.backgroundColor = "#0078ad";
    else if (str == "20")
    div.style.backgroundColor = "#d11140";
    else if (str == "30")
    div.style.backgroundColor = "#fdb813";
    else
    div.style.backgroundColor = "#0078ad";
    </script>
    actionscript:
    import flash.external.ExternalInterface;
    var jsArgument:String = _level0._currentframe;
    ExternalInterface.call("getFrame", jsArgument);

    hi
    actionscript 2.0
    When running this code in IE7, it works, it return the
    correct frameid. But when testing on Opera 9.x it only return 19.
    19 isn't a keyframe in the flash movie. The keyframes are: 1, 10,
    20, 30, 40, 50.. No matter what frame is used in the flash movie,
    it returns 19
    what's wrong with my code?
    here is my code
    <object
    classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="
    http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0"
    width="960" height="108">
    <param id="Param1" name="movie" value="../Flash/test.swf"
    />
    <param name="allowScriptAccess" value="sameDomain" />
    <param name="allowFullScreen" value="false" />
    <param name="movie" value="../Flash/test.swf" />
    <param name="FlashVars" value="frameid=world" />
    <embed src="../Flash/test.swf" width="960"
    FlashVars="frameid=world" height="108"
    allowScriptAccess="sameDomain" allowFullScreen="false"
    type="application/x-shockwave-flash" pluginspage="
    http://www.adobe.com/go/getflashplayer"></embed>
    </object>
    <body onload="getFrame()">
    <form id="form1" runat="server">
    <div>
    <script type="text/javascript">
    function getFrame(str) {
    var div=document.getElementById("LeftPanel")
    alert(str);
    if (str == "10")
    div.style.backgroundColor = "#0078ad";
    else if (str == "20")
    div.style.backgroundColor = "#d11140";
    else if (str == "30")
    div.style.backgroundColor = "#fdb813";
    else
    div.style.backgroundColor = "#0078ad";
    </script>
    actionscript:
    import flash.external.ExternalInterface;
    var jsArgument:String = _level0._currentframe;
    ExternalInterface.call("getFrame", jsArgument);

  • "if currentframe = # gotoAndStop(blah)"

    I'm tyring to make something happen when a certain frame is
    hit, rather then if the certain frame is already on.
    If there was such thing as a "when" statement, rather then an
    "if" statement, I'd be using it right now.
    In my mind, this is what I want to do:

    Well that's cool and all, thank you. I really need this
    because it's not working, could you please tell me where I'm
    supposed to place this actionscript?
    I have multiple buttons with that ActionScript and it works,
    but when I press the first one, it passes a function, and then I
    try to do a second button and it uses the first function because,
    I'm guessing, it hasn't cleared it out before passing the new one.
    Where do I put the piece of AS you've suggested?

  • Example from the SDK. How to check in plugin FrameLabelUI.pln whether file exists with plugin FrameLabel.pln?

    or how to check for any plugin, there are system dependent other plugins?

    in which file?
    i added to FrmLblUIActionComponent in constructor
    FrmLblUIActionComponent::FrmLblUIActionComponent(IPMUnknown* boss)
      : CActionComponent(boss),fPrintFrmLbl(kFalse)
      CAlert *alert = new CAlert();
      if( Utils<IFrameLabelDataFacade>().Exists() )
      alert->ErrorAlert("Plugin can run because dependency plugin found :)");
      else
      alert->ErrorAlert("Plugin can't run because dependency plugin not found!");
    faults
    Error
    2
    error C2065: 'IFrameLabelDataFacade' : undeclared identifier
    c:\adobesdk\win\cs4\indesign\source\sdksamples\framelabelui\FrmLblUIActionComponent.cpp
    125
    Error
    3
    error C2955: 'Utils' : use of class template requires template argument list
    c:\adobesdk\win\cs4\indesign\source\sdksamples\framelabelui\FrmLblUIActionComponent.cpp
    125
    Error
    4
    error C2228: left of '.Exists' must have class/struct/union
    c:\adobesdk\win\cs4\indesign\source\sdksamples\framelabelui\FrmLblUIActionComponent.cpp
    125

  • Help! I don't understand the frame mechanics.

    Hi, I've been trying to figure out how frames work in Flash.  I'm new to ActionScript, so I don't know the inner workings of the language.  I tried checking the API but no Frame class is listed.  The closest thing was FrameLabel and that wasn't helpful.  I need to know a few things:
    1) How can I tell what frame I am in?  If there is a class method for this, what is the exact name?
    2) How does a frame advance?  I have some code with no timer, only event listeners/handlers, and I've got a hacked animation working without playing clips on the time line.  The displayed pictures change whenever I press a directional button to move the character.  This is not really what I want to do however, because I'm switching the visibility of many different symbols and updating their position according to the original player symbol.  Very inefficient.  And does that mean that the frame only advances when a button is pressed? Am I even advancing the frame at all?  I don't know any frame advance method.
    3) How do frames work on the time line?  I have all of my symbols on a single frame.  I made their visibility false in my constructor because I don't want some things to show when I first load up the .swf file.  When I created a second frame, everything went crazy and things began to show up.  This suggests that the visibility = false was only done in the first frame?  What caused the frame to change?  I don't really get it.
    Ideally I want to achieve a dynamically modifiable animation because the game actions are not going to be linear.  The player character will be responding to controls (which will change the animation) and the AI will be responding to the player (which will also change the animation).  I don't think I can do this without understanding frames, so please help me.  I'm very confused!  Even pointing me in the right direction as to where I can read about frame details would be cool.  I've tried Adobe tutorials, support, and documentation but it was not sufficient.  Is there any place where there is a very in depth explanation about frames, or would someone be so kind as to tutor me about them?
    Thanks in advance.

    You can find out the current frame by using the currentFrame property. There are a number of ways to change frames, where the most common would be prevFrame(), nextFrame(), play(), gotoAndPlay(), and gotoAndStop().  There are plenty of ways to make use of frames in a Flash file, from having linear animations along the timeline, to have each frame being a distinct zone of operation that contains elements having their own timelines.
    One thing you may need to get a handle on are the different types of frames.  There are plain frames and there are keyframes.  Plain frames genrally involve a continuation of preceding frames, while keyframes mark an area of change.  In your example of things going crazy when you added a second frame, I am guessing you implanted a new keyframe because had you inserted a plain frame the status of your content from frane 1 would not have been impacted.
    I don't know of any resources for you to follow up with for learning more about frames--I came to learn them thru trial and error.  Someone else may come along with some suggestions for reference materials.

Maybe you are looking for

  • Final cut Express unable to capture

    My Final Cut Express wont initialize my deck. A dialog box comes up saying so. one site suggest deleting quicktime receipts in my library folder on my mac, that quicktime needs to be reinstalled, then i should be able to get my canon HV20 video camer

  • OVA8 credit check against overdue open item

    Hi, In OVA8, there is a check on open items. May I know what is max open item % and NoDays OpenI? Let say i maintain max open item % = 10 and NoDays OpenI = 40, can advise how system work with these with example? As each open item has its own due dat

  • File to mail scenario with zip file as an attachment

    Hi experts, I have a file to mail scenario.The mail contains a zip file as an attachment. The file in the input folder is a zip file. I want to send this zip file via email using mail adapter.How can i achieve this?Please help me to solve it out. Reg

  • How do I reply to an answer in this forum???

    This is forum specific, admin type question.  I would like to know how to use the reply function on an answer to a post I've made? Thanks. This question was solved. View Solution.

  • ADF Logger - logging.xml file

    Hi, We are building an ADF Application and created our logger, which is a wrapper around the ADFLogger. As expected logging etc works just fine for the ADF applications deployed in weblogic. However there are parts of the application which could be a