PDA

View Full Version : Tweens works well in IE and safari, not in firefox!


asiul
03-07-2008, 11:57 AM
Hi!
I have this animation were the objects got to a diferent place according to its level.
My problem is that everything works perfect on safari, IE and in my mac flashplayer. When i test it in firefox (both pc and mac), or even when i run a projector on pc, I have some bugs in the tweens!!
What can be wrong? Can anyone help me?



This is part of the code corresponding to the roll over:


var container:Sprite = new Sprite();
addChild(container);

container.addChild(square);
container.addChild(polaroid3);
container.addChild(polaroid1);
container.addChild(polaroid7);
container.addChild(polaroid6);
container.addChild(polaroid5);
container.addChild(polaroid4);

//abrir leque

container.addEventListener(MouseEvent.ROLL_OVER, rollovercontainer);
function rollovercontainer(event:MouseEvent):void {
if (container.getChildIndex(polaroid1) == 1) {
var myTween1:Tween = new Tween(polaroid1, "x", Regular.easeOut, 60, 60, 1, true);
container.setChildIndex(polaroid1, 1);
}
if (container.getChildIndex(polaroid1) == 2) {
var myTwee72:Tween = new Tween(polaroid1, "x", Regular.easeOut, 60, 180, 1, true);
container.setChildIndex(polaroid1,2);
}
if (container.getChildIndex(polaroid1) == 3) {
var myTween2:Tween = new Tween(polaroid1, "x", Regular.easeOut, 60, 320, 1, true);
container.setChildIndex(polaroid1, 3);
}
if (container.getChildIndex(polaroid1) == 4) {
var myTween3:Tween = new Tween(polaroid1, "x", Regular.easeOut, 60, 460, 1, true);
container.setChildIndex(polaroid1, 4);
}
if (container.getChildIndex(polaroid1) == 5) {
var myTween4:Tween = new Tween(polaroid1, "x", Regular.easeOut, 60, 595, 1, true);
container.setChildIndex(polaroid1,5);
}
if (container.getChildIndex(polaroid1) == 6) {
var myTween5:Tween = new Tween(polaroid1, "x", Regular.easeOut, 60, 720, 1, true);
container.setChildIndex(polaroid1,6);
}
if (container.getChildIndex(polaroid3) == 1) {
var myTween6:Tween = new Tween(polaroid3, "x", Regular.easeOut, 60, 60, 1, true);
container.setChildIndex(polaroid3,1);
}
if (container.getChildIndex(polaroid3) == 2) {
var myTween7:Tween = new Tween(polaroid3, "x", Regular.easeOut, 60, 180, 1, true);
container.setChildIndex(polaroid3,2)
}
if (container.getChildIndex(polaroid3) == 3) {
var myTween8:Tween = new Tween(polaroid3, "x", Regular.easeOut, 60, 320, 1, true);
container.setChildIndex(polaroid3,3);
}
if (container.getChildIndex(polaroid3) == 4) {
var myTween9:Tween = new Tween(polaroid3, "x", Regular.easeOut, 60, 460, 1, true);
container.setChildIndex(polaroid3,4);
}
if (container.getChildIndex(polaroid3) == 5) {
var myTween10:Tween = new Tween(polaroid3, "x", Regular.easeOut, 60, 595, 1, true);
container.setChildIndex(polaroid3,5);
}
if (container.getChildIndex(polaroid3) == 6) {
var myTween11:Tween = new Tween(polaroid3, "x", Regular.easeOut, 60, 720, 1, true);
container.setChildIndex(polaroid3,6);
}
if (container.getChildIndex(polaroid4) == 1) {
var myTween12:Tween = new Tween(polaroid4, "x", Regular.easeOut, 57, 60, 1, true);
container.setChildIndex(polaroid4, 1);
}
if (container.getChildIndex(polaroid4) == 2) {
var myTween13:Tween = new Tween(polaroid4, "x", Regular.easeOut, 57, 180, 1, true);
container.setChildIndex(polaroid4,2);
}
if (container.getChildIndex(polaroid4) == 3) {
var myTween14:Tween = new Tween(polaroid4, "x", Regular.easeOut, 57, 320, 1, true);
container.setChildIndex(polaroid4 ,3);
}
if (container.getChildIndex(polaroid4) == 4) {
var myTween15:Tween = new Tween(polaroid4, "x", Regular.easeOut, 57, 460, 1, true);
container.setChildIndex(polaroid4, 4);
}
if (container.getChildIndex(polaroid4) == 5) {
var myTween16:Tween = new Tween(polaroid4, "x", Regular.easeOut, 60, 595, 1, true);
container.setChildIndex(polaroid4, 5);
}
if (container.getChildIndex(polaroid4) == 6) {
var myTween17:Tween = new Tween(polaroid4, "x", Regular.easeOut, 60, 720, 1, true);
container.setChildIndex(polaroid4,6);
}
if (container.getChildIndex(polaroid5) == 1) {
var myTween18:Tween = new Tween(polaroid5, "x", Regular.easeOut, 60, 60, 1, true);
container.setChildIndex(polaroid5,1);
}
if (container.getChildIndex(polaroid5) == 2) {
var myTween19:Tween = new Tween(polaroid5, "x", Regular.easeOut, 60, 180, 1, true);
container.setChildIndex(polaroid5,2);
}
if (container.getChildIndex(polaroid5) == 3) {
var myTween20:Tween = new Tween(polaroid5, "x", Regular.easeOut, 60, 320, 1, true);
container.setChildIndex(polaroid5,3);
}
if (container.getChildIndex(polaroid5) == 4) {
var myTween21:Tween = new Tween(polaroid5, "x", Regular.easeOut, 60, 460, 1, true);
container.setChildIndex(polaroid5,4);
}
if (container.getChildIndex(polaroid5) == 5) {
var myTween22:Tween = new Tween(polaroid5, "x", Regular.easeOut, 60, 595, 1, true);
container.setChildIndex(polaroid5,5);
}
if (container.getChildIndex(polaroid5) == 6) {
var myTween23:Tween = new Tween(polaroid5, "x", Regular.easeOut, 60, 720, 1, true);
container.setChildIndex(polaroid5,6);
}
if (container.getChildIndex(polaroid6) == 1) {
var myTween24:Tween = new Tween(polaroid6, "x", Regular.easeOut, 63, 60, 1, true);
container.setChildIndex(polaroid6,1);
}
if (container.getChildIndex(polaroid6) == 2) {
var myTween25:Tween = new Tween(polaroid6, "x", Regular.easeOut, 63, 180, 1, true);
container.setChildIndex(polaroid6, 2);
}
if (container.getChildIndex(polaroid6) == 3) {
var myTween26:Tween = new Tween(polaroid6, "x", Regular.easeOut, 63, 320, 1, true);
container.setChildIndex(polaroid6,3);
}
if (container.getChildIndex(polaroid6) == 4) {
var myTween27:Tween = new Tween(polaroid6, "x", Regular.easeOut, 63, 460, 1, true);
container.setChildIndex(polaroid6, 4);
}
if (container.getChildIndex(polaroid6) == 5) {
var myTween28:Tween = new Tween(polaroid6, "x", Regular.easeOut, 63, 595, 1, true);
container.setChildIndex(polaroid6,5);
}
if (container.getChildIndex(polaroid6) == 6) {
var myTween29:Tween = new Tween(polaroid6, "x", Regular.easeOut, 63, 720, 1, true);
container.setChildIndex(polaroid6, 6);
}
if (container.getChildIndex(polaroid7) == 1) {
var myTween30:Tween = new Tween(polaroid7, "x", Regular.easeOut, 55, 60, 1, true);
container.setChildIndex(polaroid7,1);
}
if (container.getChildIndex(polaroid7) == 2) {
var myTween31:Tween = new Tween(polaroid7, "x", Regular.easeOut, 55, 180, 1, true);
container.setChildIndex(polaroid7,2);
}
if (container.getChildIndex(polaroid7) == 3) {
var myTween32:Tween = new Tween(polaroid7, "x", Regular.easeOut, 55, 320, 1, true);
container.setChildIndex(polaroid7,3);
}
if (container.getChildIndex(polaroid7) == 4) {
var myTween33:Tween = new Tween(polaroid7, "x", Regular.easeOut, 55, 460, 1, true);
container.setChildIndex(polaroid7,4);
}
if (container.getChildIndex(polaroid7) == 5) {
var myTween34:Tween = new Tween(polaroid7, "x", Regular.easeOut, 55, 595, 1, true);
container.setChildIndex(polaroid7, 5);
}
if (container.getChildIndex(polaroid7) ==6) {
var myTween35:Tween = new Tween(polaroid7, "x", Regular.easeOut, 55, 720, 1, true);
container.setChildIndex(polaroid7,6);
}
container.setChildIndex(square,0);
square.visible = true;


}

Mazoonist
03-08-2008, 12:26 AM
It's not a browser issue. You need to declare your Tweens outside of the function that uses them, or they get "garbage collected."

var tween1:Tween

function whatever(event:MouseEvent) {
tween1 = new Tween(...etc)
}

sgartner
03-08-2008, 03:15 AM
Hi!
I have this animation were the objects got to a diferent place according to its level.
My problem is that everything works perfect on safari, IE and in my mac flashplayer. When i test it in firefox (both pc and mac), or even when i run a projector on pc, I have some bugs in the tweens!!
What can be wrong? Can anyone help me?


I think Mazoonist has your problem diagnosed correctly, but also I think it deserves being pointed out that there are better ways to code up what you have here. The following block accomplishes exactly the same thing as your's with a lot less code and easier to maintain (for example if you want to change the tween destination for layer 3 from 320 to 340 you only have to change that number once in my code and 6 times in your's).

While I can't say I understand why you are calling setChildIndex and setting each child to the level that it is already at (which, unless I'm missing something, doesn't actually accomplish anything) I reproduced that exactly in the following code:


var container:Sprite = new Sprite();
addChild(container);

container.addChild(square);
container.addChild(polaroid3);
container.addChild(polaroid1);
container.addChild(polaroid7);
container.addChild(polaroid6);
container.addChild(polaroid5);
container.addChild(polaroid4);

var offsetList:Array = [60, 180, 320, 460, 595, 720];
var polaroids:Array = [polaroid1,
polaroid3,
polaroid4,
polaroid5,
polaroid6,
polaroid7];

// Storage for the tweens
var tweenList:Array = new Array();

//abrir leque (opening fan?)
container.addEventListener(MouseEvent.ROLL_OVER, rollovercontainer);

function rollovercontainer (event : MouseEvent) : void
{
for (var i:int = 0; i < polaroids.length; i++)
{
var polaroid = polaroids[i];
var index = container.getChildIndex(polaroid);

var tweenIndex:int = (index*offsetList.length)+i;
if ( tweenList[tweenIndex]
&& tweenList[tweenIndex].isPlaying)
{
tweenList[tweenIndex].stop();
}

tweenList[tweenIndex] = new Tween(polaroid,
"x",
Regular.easeOut,
60,
offsetList[index],
1,
true);

// I don't see the point to this call, but it was in the
// original code
container.setChildIndex(polaroid, index);
}

container.setChildIndex(square,0);
square.visible = true;
}


Let me know if any of this is unclear.

asiul
03-10-2008, 12:03 PM
Thank you so much for your help Sgartner and Mazoonist, now everything works perfectly... :-)