воскресенье, 31 июля 2011 г.

"Поползновение" слоёв, часть 2

Автор: Серёжа

  Так пока и не получилось распараллелить выполнение команд, зато получилось "причесать" сам скрипт, теперь  слой приезжает точно туда, куда его просили, а не "куда-то сюда" =) Помимо этого, разные слои теперь едут одинаковое время. Вот, собственно, скрипт:



#include "scripts\base.inc"
global Time;
method Scroll(var x, var y, var v)
{
//определяем кол-во Node на слое
var curNode;
var b=0;
var k=true;
while (k==true)
{
curNode=this.GetNode(b);
if (curNode==null)
k=false;
b=b+1;
}
////////////////////////////////

//начинаем перемещение
var h=10;
var SampleNode=this.GetNode(0);
SampleNode.X1=SampleNode.X+x;
SampleNode.Y1=SampleNode.Y+y;
var d;
d.x=(x*h)/v;
d.y=(y*h)/v;
var c=true;
var i=0;
while (c)
{
var t1=Time;
for (var j=0; j<b-1 ;j=j+1)
{
curNode=this.GetNode(j);
curNode.SkipTo((curNode.X + d.x),(curNode.Y+d.y));
}
if (x>0 && ((SampleNode.X-SampleNode.X1)>0))
c=false;
if (x<0 && ((SampleNode.X-SampleNode.X1)<0))
c=false;
if (y>0 && ((SampleNode.Y-SampleNode.Y1)>0))
c=false;
if (y<0 && ((SampleNode.Y-SampleNode.Y1)<0))
c=false;
Sleep ((t1+h)- Time);
i=i+1;
}
for (var k1=0; k1<b-1 ;k1=k1+1)
{
curNode=this.GetNode(k1);
curNode.SkipTo(SampleNode.X1,SampleNode.Y1);
}
}
Надеюсь, пригодится.

Комментариев нет:

Отправить комментарий