使用字符串 actionscript3 应用包含补间的函数
Applying a function containing tweens using a string actionscript3
这是我的场景:
我的舞台左边有5个词汇。游戏开始时,第一个单词会移动到屏幕右侧的位置。此时,玩家可以点击我在舞台底部的一个"next button"。单击此按钮时,第二个词汇应移动到舞台右侧的位置,而第一个词汇将动画回到舞台左侧的原始位置。
所有词汇单词将使用相同的动画移入和移出位置。我在下面粘贴了我试图修复的部分代码。这仅适用于将下一个词汇动画化到屏幕右侧位置的步骤。我很确定如果我能得到帮助,我可以自己解决其他问题。
希望我设置错误代码的方式能够让我明白我想要完成的事情。我收到的错误是:错误#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]();
}
}
例如,您可以在 class 中使用 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);
}
}
}
创建 class :
然后您只需使用以下方式调用它:
object2.moveIn();
希望能帮到你。
你最好用TweenMax,by GreenSock:
下载greensock.SWC库,放在你的.fla附近。通过转到
添加 SWC
Advance Actionscript 3.0 设置 -> 库路径 -> 添加 SWC 文件.
在舞台上,我放了 5 个名为 object1 到 object5 的动画片段和一个名为 button。
这是时间轴上的 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 位置,并在将它们动画化时重置它们,而不是我所做的,使用索引计算 Y (newY) :P
这是我的场景:
我的舞台左边有5个词汇。游戏开始时,第一个单词会移动到屏幕右侧的位置。此时,玩家可以点击我在舞台底部的一个"next button"。单击此按钮时,第二个词汇应移动到舞台右侧的位置,而第一个词汇将动画回到舞台左侧的原始位置。
所有词汇单词将使用相同的动画移入和移出位置。我在下面粘贴了我试图修复的部分代码。这仅适用于将下一个词汇动画化到屏幕右侧位置的步骤。我很确定如果我能得到帮助,我可以自己解决其他问题。
希望我设置错误代码的方式能够让我明白我想要完成的事情。我收到的错误是:错误#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]();
}
}
例如,您可以在 class 中使用 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);
}
}
}
创建 class :
然后您只需使用以下方式调用它:
object2.moveIn();
希望能帮到你。
你最好用TweenMax,by GreenSock:
下载greensock.SWC库,放在你的.fla附近。通过转到
添加 SWCAdvance Actionscript 3.0 设置 -> 库路径 -> 添加 SWC 文件.
在舞台上,我放了 5 个名为 object1 到 object5 的动画片段和一个名为 button。
这是时间轴上的 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 位置,并在将它们动画化时重置它们,而不是我所做的,使用索引计算 Y (newY) :P