Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 使用字符串actionscript3应用包含tween的函数_Flash_Air_Actionscript 3 - Fatal编程技术网

Flash 使用字符串actionscript3应用包含tween的函数

Flash 使用字符串actionscript3应用包含tween的函数,flash,air,actionscript-3,Flash,Air,Actionscript 3,以下是我的设想: 我的舞台左边有5个单词。当游戏开始时,第一个单词在屏幕右侧移动到位。此时,玩家可以点击我在舞台底部的“下一步按钮”。单击此按钮时,第二个词汇词应在舞台右侧设置动画,而第一个词汇词将在舞台左侧设置动画,回到其原始位置 所有词汇表单词都将使用相同的动画来移入和移出位置。我在下面粘贴了我试图修复的部分代码。这仅适用于需要在屏幕右侧设置下一个词汇单词动画的步骤。我很确定如果我能在这方面得到帮助,我就能自己解决其他问题 希望我的错误代码的设置方式能为我试图实现的目标提供一个要点。我得到的

以下是我的设想:

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

所有词汇表单词都将使用相同的动画来移入和移出位置。我在下面粘贴了我试图修复的部分代码。这仅适用于需要在屏幕右侧设置下一个词汇单词动画的步骤。我很确定如果我能在这方面得到帮助,我就能自己解决其他问题

希望我的错误代码的设置方式能为我试图实现的目标提供一个要点。我得到的错误是::error#1006:value不是函数。行:“
object2[animateIn]();


例如,您可以在类中使用
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();

希望能有所帮助。

你最好使用TweenMax,:

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

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

在舞台上,我放了5个名为object1到object5的movieclips和一个名为button的SimpleButton

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

导入flash.display.MovieClip;
导入com.greensock.TweenMax;
//所有电影剪辑的数组
变量词:数组=[object1,object2,object3,object4,object5];
//将第一个单词设置为中心动画
var currentWord:MovieClip=words[0];
animateCurrentWordToCenter();
//倾听按钮的咔嗒声
按钮.addEventListener(MouseEvent.CLICK,按钮ClickedHandler);
功能按钮ClickedHandler(事件:MouseeEvent):无效
{
//获取索引
var索引:int=words.indexOf(currentWord);
//设置动画返回到位置
新变量:数字=(指数+1)*50;
TweenMax.to(currentWord,0.3,{x:20,y:newY,scaleX:1,scaleY:1});
//计算下一个索引,循环回到第一个单词
var-nextIndex:int=(索引+1)%words.length;
当前单词=单词[nextIndex];
//将currentWord设置为居中动画
animateCurrentWordToCenter();
}
函数animateCurrentWordToCenter()
{
//语法:TweenMax.to(,)
TweenMax.to(currentWord,0.3,{x:150,y:200,scaleX:2,scaleY:2});
}

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

您能解释一下您在做什么吗?您是否尝试将
object2
传递给
moveIn()
,或者
moveIn()
是您尝试调用的
object2
的函数?是的,我希望在单击下一行时moveIn()是object2的函数,但仅当对象1位于y位置75时。您不能这样做。你能解释一下你为什么需要它或者你想用它做什么吗?您是否正在尝试将这两个tweens应用于
object2
。。。是的,每次单击下一个箭头时,我需要将同一组tweens应用到更多的对象。我的动机是这样做,这样Tween就不会因为GCI而冻结或崩溃程序。我不知道为什么要使用
事件
对象作为
moveIn()
函数的参数,但您可以这样做:
moveIn(object2)
在更改该参数的类型后当然……这会有很大帮助,但我认为它不起作用,因为我试图在嵌套的电影剪辑中实现这一点。@Warren这是MovieClip(ActionScript链接类)的类。我编辑了我的答案,看一看。我不确定我做错了什么,但我不断得到错误,该类无法嵌套。我试图删除“包”部分,但仍然出现嵌套错误。@Warren您可能在时间线上添加了代码,这是不可能的。
object2.moveIn();
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});
}