PDA

Просмотр полной версии : Проблемы с Movieclip.lineTo()


Niketas
21.03.2006, 01:15
Вот простой пример использования линий.
my1_mc.clear();
var x1,y1,x2,y2;
x1=my1_mc._x;
x2=my2_mc._x;
y1=my1_mc._y;
y2=my2_mc._y;
my1_mc.lineStyle(1,0x000000,100);
my1_mc.lineTo(x2-x1,y2-y1);
При быстром перетаскивании объекта my1_mc линии не успевают дойти до my2_mc, а если наоборот, то все отлично.

Подскажите, пожалуйста, что не так, и можно ли исправить (или так оно и должно быть).

4thDimention
21.03.2006, 02:23
полчаса бился над проблемой, ниче не придумал... могу лишь для бОльшей удобочитаемости посоветовать расположить код вот так:
my1_mc.onPress = function() {
startDrag(this, true);
};
my1_mc.onRelease = function() {
stopDrag();
};
my2_mc.onPress = function() {
startDrag(this, true);
};
my2_mc.onRelease = function() {
stopDrag();
};
var x1, y1, x2, y2;
onEnterFrame = function () {
my1_mc.clear();
my1_mc.lineStyle(1, 0x000000, 100);
x1 = my1_mc._x;
y1 = my1_mc._y;
x2 = my2_mc._x;
y2 = my2_mc._y;
my1_mc.lineTo(x2-x1, y2-y1);
};

Golovach
21.03.2006, 13:50
Все гениальное просто:

my1_mc.onPress = function() {
startDrag(this, true);
};
my1_mc.onRelease = function() {
stopDrag();
};
my2_mc.onPress = function() {
startDrag(this, true);
};
my2_mc.onRelease = function() {
stopDrag();
};
var x1, y1, x2, y2;
_root.createEmptyMovieClip("lines", this.getNextHighestDepth());
onEnterFrame = function () {
lines.clear();
lines.lineStyle(1, 0x000000, 100);
x1 = my1_mc._x;
y1 = my1_mc._y;
x2 = my2_mc._x;
y2 = my2_mc._y;
lines.moveTo(x1, y1);
lines.lineTo(x2, y2);
};

Golovach
21.03.2006, 13:52
И 120 fps - это перебор...

Niketas
21.03.2006, 23:45
Почему перебор?

silin
22.03.2006, 00:09
если на onMouseMove это добро повесить, то фпс уже не волнует (хоть 0,5 ставь):
my2_mc.onPress = my1_mc.onPress = function() {
startDrag(this, true);
_root.onMouseMove=drawLine;
};
my2_mc.onRelease =my1_mc.onRelease = function() {
stopDrag();
delete _root.onMouseMove;
};
drawLine=function(){
clear();
lineStyle(1, 0x000000, 100);
moveTo(my1_mc._x, my1_mc._y);
lineTo(my2_mc._x, my2_mc._y);
updateAfterEvent();
}
drawLine();

Niketas
22.03.2006, 00:14
3
Спасибо! Осталось дорегулировать depth самих мувиков, и все ок.