Hi there. I am working on a site where I have coded a number of different Tweens to shift between the menu states. The code works just great on its own, but when I then start loading external SWFs to populate the menu, things start acting a little funny. More specifically, on occasion, one of the Tweens does not complete as it should - it stops part-way and does not fire TweenEvent.MOTION_FINISH. Is there something I could be dong that interrupts the Tween? I am using the Loader class to load the SWF and I use the FLVPlayback class within the SWF - would either of these interfere with the Tweens?
It’s quite a frustrating problem. The first time I coded the whole thing I built objects on the stage and then animated them with code… when I ran into the above problem, I figured it could be a problem with my code and decided to redo the whole thing using a class for the menu. But this has the exact same problem - it works fine on its own, but not in conjunction with the external SWF I need to load in.
It doesn’t seem to be a problem with my tween code - since it works fine on its own - but just in case, here is my class:
package {
import flash.display.MovieClip;
import fl.transitions.Tween;
import fl.transitions.TweenEvent;
import fl.transitions.easing.*;
public class Panel extends MovieClip{
public var panelX: Number = 0;
public var tabHeight: Number = 30;
public var panelHeight: Number = 475;
public var panelWidth: Number = 250;
public var fullWidth: Number = 770;
public var tabY: Number = 0 - tabHeight;
public var changeSpeed: Number = .5;
public var currentState: String = "unselected";
public function Panel (col:String,panelNum:Number) {
var mc = new MovieClip();
mc.graphics.beginFill(col);
mc.graphics.drawRect(0,0,panelWidth,panelHeight);
addChild(mc);
if(panelNum == 2) mc.x -= panelWidth/2;
else if(panelNum == 3) mc.x -= panelWidth;
}
public function moveToTab () {
if(currentState == "unselected") {
trace(this);
var mc_tween1: Object = new Tween(this,"y",None.easeNone,this.y,this.y-tabHeight,changeSpeed,true);
var mc_tween2: Object = new Tween(this,"height",None.easeNone,this.height,tabHeight,changeSpeed,true);
//var mc_tween3: Object = new Tween(this,"alpha",None.easeNone,1,.5,changeSpeed,true);
}
if(currentState == "maximized") {
var mc_tween1: Object = new Tween(this,"y",None.easeNone,this.y,this.y-30,changeSpeed,true);
var mc_tween2: Object = new Tween(this,"height",None.easeNone,this.height,tabHeight,changeSpeed,true);
var mc_tween3: Object = new Tween(this,"width",None.easeNone,fullWidth,panelWidth,changeSpeed,true);
}
currentState = "tabbed";
}
public function maximize () {
parent.setChildIndex(this,2);
if(currentState == "unselected") {
var mc_tween2: Object = new Tween(this,"height",None.easeNone,this.height,panelHeight,changeSpeed,true);
var mc_tween3: Object = new Tween(this,"width",None.easeNone,panelWidth,fullWidth,changeSpeed,true);
}
else if(currentState == "tabbed") {
var mc_tween1: Object = new Tween(this,"y",None.easeNone,this.y,this.y+tabHeight,changeSpeed,true);
var mc_tween2: Object = new Tween(this,"height",None.easeNone,this.height,panelHeight,changeSpeed,true);
var mc_tween3: Object = new Tween(this,"width",None.easeNone,panelWidth,fullWidth,changeSpeed,true);
var mc_tween5: Object = new Tween(this,"alpha",None.easeNone,.5,1,changeSpeed,true);
}
currentState = "maximized";
}
}
}
You can see a working version here: http://playwithyourmind.com/freelance/sam/panel_test.swf
and then the broken version here: http://playwithyourmind.com/freelance/sam/panel_test1.swf
… just click on the panels to switch between them
Thanks, any insights are greatly appreciated!