Анимация ряда линий, связывающих пары объектов в AS3 - PullRequest
0 голосов
/ 07 октября 2011

Я пытаюсь составить сопоставление, в котором слова в одном столбце связаны строкой с определениями в другом столбце.Как только все слова будут связаны с их определениями, вы получите серию пересекающихся линий, поэтому я хочу, чтобы определения и их линии переместились так, чтобы каждое из них находилось на одном уровне со своим связанным словом, и линии были распутаны.Я дошел до того, что соединил слова с их определениями, используя строку (как спрайт), и определения можно затем переместить с помощью tweenlite, но я понятия не имею, как я перемещаю строки с их определением.Вот очень упрощенный раздел кода, чтобы дать вам представление о том, что я пытаюсь сделать

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});
}

Я новичок в этом, поэтому любая помощь в том, как бы я анимировал строки, чтобы они следовали определениям,Буду очень признателен.

1 Ответ

0 голосов
/ 09 октября 2011

Спасибо за помощь, это помогло мне начать - ошибки возникают потому, что когда происходит 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);
        }
     }   

Еще раз большое спасибо за то, что направили меня в правильном направлении, это сэкономило мне кучу времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...