PDA

Просмотр полной версии : Что не так? Тормоза.


Штрек
18.12.2003, 21:56
Вот такой скриптик

_root.createEmptyMovieClip("tochka", 999);
with (_root.tochka) {
lineStyle(30, 0xff0000, 100);
lineTo(1, 1);
_x = -5;
}
var i = 0;
_root.onMouseDown = function() {
_root.onMouseMove = function() {
i += 1;
_root.tochka.duplicateMovieClip("tochka"+i, 999+i);
_root["tochka"+i]._x = _root._xmouse;
_root["tochka"+i]._y = _root._ymouse;
j = i;
};
};
_root.onEnterFrame = function() {
for (i=1; i<j+1; i++) {
_root["tochka"+i]._alpha -= 3;
if (_root["tochka"+i]._alpha<=0) {
_root["tochka"+i].removeMovieClip();
}
}
};
_root.onMouseUp = function() {
delete _root.onMouseMove;
};

Вроде через 2-3 сек ремовятся все дубликаты.
Однако с каждым разом дубликаты появляются всё
менее шустро/т.е. плэер подтормаживает всё больше/
Чего бы это значило?

Nox Noctis
18.12.2003, 22:48
напутал с индексами :)
и к тому же ты всегда перебираешь все пройденные индексы...
если на сцене не осталось точек - ты все равно гонишь цикл по всем бывшим точкам

лучше так:
_root.createEmptyMovieClip("tochka", 999);
tochka.lineStyle(30, 0xff0000, 100);
tochka.lineTo(.15, 0);
tochka._visible = 0
//
heap = [];
count = 0;
//
_root.onMouseDown = function() {
_root.onMouseMove = function() {
var name = "tochka"+(++count);
tochka.duplicateMovieClip(name, 999+count);
_root[name]._x = _root._xmouse;
_root[name]._y = _root._ymouse;
heap.push(_root[name]);
};
_root.onEnterFrame = function() {
for (var i in heap) {
heap[i]._alpha -= 3;
if (heap[i]._alpha<=0) {
removeMovieClip(heap[i]);
heap.splice(i, 1);
}
}
};
};
_root.onMouseUp = function() {
delete _root.onMouseMove;
};

Штрек
19.12.2003, 00:05
да здравствует мыло душистое и веревка пушистая ! :p