avalon
%Europe/Berlin %693 %2005, 17:38
Hallo allemaal,
Ik heb een script waarmee ik een draadje kan tekenen tussen movieclip a en movieclip b.
In mijn stage staan volgende MC's:
btnHome (Dit is eigenlijk een Button waarvan ik een MC gemaakt heb om het script te laten werken)
clpRootHome (De basis waaruit het draadje vertrekt.)
Als ik het script toepas met enkel deze twee movieclips werkt het perfect.
Nu de volgende stap is dat ik nog 4 andere MC's heb:
- btnGuestbook (is eigelijk ook Button, zoals btnHome)
- clpRootGuestbook (zelfde principe als clpRootHome)
- btnPortfolio
- clpRootPortfolio
En daar moet ook telkens weer een draadje tussen komen.
Nu heb ik geprobeert om met een klasse te werken en telkens een nieuwe instantie van een draadje aan te maken maar dat doet het dus niet echt en ik heb geen idee hoe ik dat wel kan laten werken.
De code die voor het draadje, waarbij h1 = btnHome en h2 = clpRootHome bijvoorbeeld.
numPoints = 20;
init();
function init()
{
var dx = h2._x - h1._x;
var dy = h2._y - h1._y;
points = new Array();
for(var i=0;i<numPoints;i++)
{
points[i] = {x:h1._x + dx / numPoints * i, y:h1._y + dy / numPoints * i, vx:0, vy:0};
}
setInterval(drawLine,100);
}
function drawLine()
{
trace([h1._x, h2._x]);
for(var i=0;i<numPoints;i++)
{
points[i].x += points[i].vx;
points[i].y += points[i].vy;
/*
points[i].vx += Math.random() - .5;
points[i].vy += Math.random() - .5;
*/
if(i == 0)
{
var x1 = h1._x;
var y1 = h1._y;
}
else
{
var x1 = points[i-1].x;
var y1 = points[i-1].y;
}
if(i < numPoints-1)
{
var x2 = points[i+1].x;
var y2 = points[i+1].y;
}
else
{
var x2 = h2._x;
var y2 = h2._y;
}
points[i].vx += (x1 - points[i].x) * .05;
points[i].vy += (y1 - points[i].y) * .05;
points[i].vx += (x2 - points[i].x) * .05;
points[i].vy += (y2 - points[i].y) * .05;
points[i].vy += .05;
points[i].vx *= .93;
points[i].vy *= .93;
}
clear();
mc.lineStyle(1,0xFF0F00,100);
mc.moveTo(h1._x, h1._y);
for(var i=0;i<numPoints-1;i++)
{
var x = (points[i].x + points[i+1].x) / 2;
var y = (points[i].y + points[i+1].y) / 2;
mc.curveTo(points[i].x, points[i].y, x, y);
}
mc.curveTo(points[i].x, points[i].y, h2._x, h2._y);
}
Nu is de vraag, hoe moet ik dit dupliceren of dynamisch maken zodat ik 3 verschillende draadjes tegelijk op mijn scherm kan zien? Een draadje zit telkens tussen twee MC's (vb. btnHome en clpRootHome)
Alvast bedankt!
- avalon
Ik heb een script waarmee ik een draadje kan tekenen tussen movieclip a en movieclip b.
In mijn stage staan volgende MC's:
btnHome (Dit is eigenlijk een Button waarvan ik een MC gemaakt heb om het script te laten werken)
clpRootHome (De basis waaruit het draadje vertrekt.)
Als ik het script toepas met enkel deze twee movieclips werkt het perfect.
Nu de volgende stap is dat ik nog 4 andere MC's heb:
- btnGuestbook (is eigelijk ook Button, zoals btnHome)
- clpRootGuestbook (zelfde principe als clpRootHome)
- btnPortfolio
- clpRootPortfolio
En daar moet ook telkens weer een draadje tussen komen.
Nu heb ik geprobeert om met een klasse te werken en telkens een nieuwe instantie van een draadje aan te maken maar dat doet het dus niet echt en ik heb geen idee hoe ik dat wel kan laten werken.
De code die voor het draadje, waarbij h1 = btnHome en h2 = clpRootHome bijvoorbeeld.
numPoints = 20;
init();
function init()
{
var dx = h2._x - h1._x;
var dy = h2._y - h1._y;
points = new Array();
for(var i=0;i<numPoints;i++)
{
points[i] = {x:h1._x + dx / numPoints * i, y:h1._y + dy / numPoints * i, vx:0, vy:0};
}
setInterval(drawLine,100);
}
function drawLine()
{
trace([h1._x, h2._x]);
for(var i=0;i<numPoints;i++)
{
points[i].x += points[i].vx;
points[i].y += points[i].vy;
/*
points[i].vx += Math.random() - .5;
points[i].vy += Math.random() - .5;
*/
if(i == 0)
{
var x1 = h1._x;
var y1 = h1._y;
}
else
{
var x1 = points[i-1].x;
var y1 = points[i-1].y;
}
if(i < numPoints-1)
{
var x2 = points[i+1].x;
var y2 = points[i+1].y;
}
else
{
var x2 = h2._x;
var y2 = h2._y;
}
points[i].vx += (x1 - points[i].x) * .05;
points[i].vy += (y1 - points[i].y) * .05;
points[i].vx += (x2 - points[i].x) * .05;
points[i].vy += (y2 - points[i].y) * .05;
points[i].vy += .05;
points[i].vx *= .93;
points[i].vy *= .93;
}
clear();
mc.lineStyle(1,0xFF0F00,100);
mc.moveTo(h1._x, h1._y);
for(var i=0;i<numPoints-1;i++)
{
var x = (points[i].x + points[i+1].x) / 2;
var y = (points[i].y + points[i+1].y) / 2;
mc.curveTo(points[i].x, points[i].y, x, y);
}
mc.curveTo(points[i].x, points[i].y, h2._x, h2._y);
}
Nu is de vraag, hoe moet ik dit dupliceren of dynamisch maken zodat ik 3 verschillende draadjes tegelijk op mijn scherm kan zien? Een draadje zit telkens tussen twee MC's (vb. btnHome en clpRootHome)
Alvast bedankt!
- avalon