我试图(迄今不成功)以编程方式增加和减少舞台上的对象的比例。有一个Grow按钮(grow_btn)和一个Shrink按钮(shrink_btn),可以随着时间的推移增加和减少选定对象(redObject,greenObject或blueObject)的scaleX和scaleY属性。Actionscript 3.0 Tween错误
我遇到的问题似乎是随机的,有时只有一个属性(scaleX或scaleY)会改变,而另一个不会。另外,补间函数的目标和原始大小不能正确调整。例如:1.0几乎是舞台上的对象的两倍。
//Imports
import fl.transitions.Tween;
import fl.transitions.easing.*;
//Constants And Variables
const starRotationAngle:Number = 0.5;
const starSpeed:Number = 2;
var moveForward:Boolean = true;
var selectedObject:MovieClip;
//Event Listeners & Functions
star_mc.addEventListener(MouseEvent.CLICK, rotateStar);
function rotateStar(e:MouseEvent):void
{
star_mc.rotation += 5;
}
addEventListener(Event.ENTER_FRAME, starMove);
function starMove(e:Event):void
{
if (star_mc.x >= stage.stageWidth + star_mc.width)
{moveForward = false;}
else if (star_mc.x <= stage.x - star_mc.width)
{moveForward = true;}
if (moveForward == true)
{
star_mc.x += starSpeed;
star_mc.rotation += starRotationAngle;
}
else
{
star_mc.x -= starSpeed;
star_mc.rotation -= starRotationAngle;
}
}
redObject.addEventListener(MouseEvent.CLICK, changeSelectedObjectVariable);
greenObject.addEventListener(MouseEvent.CLICK, changeSelectedObjectVariable);
blueObject.addEventListener(MouseEvent.CLICK, changeSelectedObjectVariable);
function changeSelectedObjectVariable(e:MouseEvent):void
{
selectedObject = e.currentTarget as MovieClip;
}
grow_btn.addEventListener(MouseEvent.CLICK, grow);
function grow(e:MouseEvent):void
{
var tweenGrowX:Tween = new Tween(selectedObject, "scaleX", None.easeIn, 1.0, 2.0, 3.0, true);
var tweenGrowY:Tween = new Tween(selectedObject, "scaleY", None.easeIn, 1.0, 2.0, 3.0, true);
}
shrink_btn.addEventListener(MouseEvent.CLICK, shrink);
function shrink(e:MouseEvent):void
{
var tweenShrinkX:Tween = new Tween(selectedObject, "scaleX", None.easeIn, 2.0, 1.0, 3.0, true);
var tweenShrinkY:Tween = new Tween(selectedObject, "scaleY", None.easeIn, 2.0, 1.0, 3.0, true);
}
谢谢。就是这样。 :) – TheDarkIn1978 2010-02-21 07:09:49
wpjmurray谢谢你的好解释。我知道垃圾收集,但完全错过了2个变量变量的范围可能导致的问题。 – 2010-02-21 20:39:29