使用字符串actionscript3应用包含补间的函数

时间:2015-11-03 09:15:58

标签: flash air actionscript-3

以下是我的情景:

我的舞台左边有5个词汇单词。当游戏开始时,第一个单词移动到屏幕右侧的位置。此时,玩家可以点击我在舞台底部的“下一个按钮”。单击此按钮时,第二个词汇单词应在舞台右侧放置动画,而第一个词汇单词将动画回到舞台左侧的原始位置。

所有词汇单词都会使用相同的动画来移动和移出位置。我已经粘贴了一些我想在下面修复的代码。这仅适用于将下一个词汇表动画放置在屏幕右侧的步骤。我很确定如果能得到这方面的帮助,我可以自己弄清楚其他一切。

希望我设置错误代码的方式将给出我想要实现的目标的要点。我得到的错误是::错误#1006:值不是一个函数。在线:“object2[animateIn]();

var animateIn:String = "moveIn";
function moveIn(e) : void
{
    var tweenUp: Tween = new Tween(e.currentTarget, "y", None.easeNone, -125, -900, .5, true);
    var tweenOver: Tween = new Tween(e.currentTarget, "x", None.easeNone, -125, 200, .1, true);
    var tweenDown: Tween = new Tween(e.currentTarget, "y", Elastic.easeOut, -900, 75, 2, true);
    var toyscaleX: Tween = new Tween(e.currentTarget, "scaleX", Elastic.easeOut, 0, 3, 2, true);
    var toyscaleY: Tween = new Tween(e.currentTarget, "scaleY", Elastic.easeOut, 0, 3, 2, true);
}


//Next Button Functionality

nextArrow.addEventListener(MouseEvent.CLICK, goNext);
function goNext(event: MouseEvent): void {
    if (object1.y == 75) {
     object2[animateIn]();
    }

}

2 个答案:

答案 0 :(得分:0)

例如,您可以在类中使用moveIn()函数,该类将被实例化以创建所有对象:

package  {

    import flash.display.MovieClip;
    import fl.transitions.Tween;
    import fl.transitions.easing.*;

    public class MyObject extends MovieClip {       

        public function MyObject() {
            // constructor code
        }

        public function moveIn() : void
        {
            var tweenUp: Tween = new Tween(this, "y", None.easeNone, -125, -900, .5, true);
            var tweenOver: Tween = new Tween(this, "x", None.easeNone, -125, 200, .1, true);
            var tweenDown: Tween = new Tween(this, "y", Elastic.easeOut, -900, 75, 2, true);
            var toyscaleX: Tween = new Tween(this, "scaleX", Elastic.easeOut, 0, 3, 2, true);
            var toyscaleY: Tween = new Tween(this, "scaleY", Elastic.easeOut, 0, 3, 2, true);
        }

    }

}

创建该类:

然后您只需使用以下方法调用它:

object2.moveIn();

希望可以提供帮助。

答案 1 :(得分:0)

您最好使用TweenMax,by GreenSock

下载greensock.SWC库,放在.fla附近。通过转到

添加SWC

高级Actionscript 3.0设置 - >库路径 - >添加SWC文件

在舞台上,我通过 object5 和一个名为按钮的SimpleButton放了5个名为 object1 的动画片段。

enter image description here

这是时间轴上的de AS3(F9):

import flash.display.MovieClip;
import com.greensock.TweenMax;

// array of all tweenable movieclips
var words:Array = [object1, object2,object3,object4,object5];

// animate first word to center
var currentWord:MovieClip = words[0];
animateCurrentWordToCenter();

// listen for button clicks
button.addEventListener(MouseEvent.CLICK, buttonClickedHandler);


function buttonClickedHandler(event: MouseEvent): void 
{
  // get index
  var index:int = words.indexOf(currentWord);   

  // animate back to position
  var newY:Number = (index + 1) * 50;
  TweenMax.to(currentWord, 0.3, {x:20, y:newY, scaleX:1, scaleY:1});

  // calculate next index, loop back to first word 
  var nextIndex:int = (index + 1) % words.length;
  currentWord = words[nextIndex];

  // animate currentWord to center
  animateCurrentWordToCenter();
}

function animateCurrentWordToCenter()
{
  // syntax: TweenMax.to(<movieclip>, <duration>, <objectWithNewProperties>)
  TweenMax.to(currentWord, 0.3, {x:150, y:200, scaleX:2, scaleY:2});
}

您可能希望在将单词设置为中心之前保存原始的X,Y位置,并在将它们设置为动画时重置它们,而不是我所做的,使用索引(newY)计算Y值< / em>:P