2011-10-07 56 views
0

我正在尝试将一个列中的单词与另一列中的定义链接在一起的匹配活动。一旦所有的单词都与他们的定义联系在一起,最终会出现一系列的交叉线,所以我希望定义和他们的路线能够移动,以便每个单词都与他们的连接词汇保持一致,并且线条已经解开。我已经尽可能的使用一条线(作为精灵)将这些词连接到它们的定义上,然后可以使用tweenlite移动这些定义 - 但是我不知道如何将这些行与它们的定义一起移动。这里是一个代码大大简化部分给你什么,我试图做动画连接AS3中对象的多条线

import com.greensock.*; 
import com.greensock.easing.*; 

var wordArray:Array = [word1, word2, word3, word4]; 
var definitionArray:Array = [definition1, definition2, definition3,definition4]; 

for (var i:int = 0; i < wordArray.length; i++){ 
var line:Sprite = new Sprite(); 
line.graphics.lineStyle(2,0x000000); 
line.graphics.moveTo(wordArray[i].x, wordArray[i].y); 
line.graphics.lineTo(definitionArray[i].x, definitionArray[i].y); 
this.addChild(line); 
} 

for (var j:int = 0; j < wordArray.length; j++){ 
    TweenLite.to(definitionArray[j], 2, {delay:1, y:wordArray[j].y}); 
} 

我是新来的这一点的想法等等,以他们遵循的定义将是非常如何将我的动画线条任何帮助非常感激。

回答

0

感谢您的帮助,它让我开始了 - 发生错误是因为发生onUpdate时,TweenLite需要知道传递给该函数的参数的类型。我所做的就是调用一个单独的函数并使用onUpdateParams:指定传递的参数的性质。下面是代码:

TweenLite.to(definitionArray[i], 3, {y:wordArray[j].y,onUpdate:refreshLines, 
       onUpdateParams:[lines,wordArray,definitionArray]}); 

与功能

function refreshLines(param1:Array,param2:Array,param3:Array):void{ 
    for (var j:int = 0; j < param4.length; j++){ 
     param1[j].graphics.clear(); 
     } 
    for (var i:int = 0; i < param4.length; i++) 
     { 
     param1[i].graphics.lineStyle(2,0x000000); 
     param1[i].graphics.moveTo(param2[i].x, param2[i].y); 
     param1[i].graphics.lineTo(param3[i].x, param3[i].y); 
     } 
    } 

再次,指着我在正确的方向千恩万谢,它救了我的时间堆。