PDA

Просмотр полной версии : удалить интервал


Samodelkin
16.08.2005, 20:05
Вообщем вот этот интервал. В онмаусдаун, еще он не определяет this.id в самом интервале но это решаемо через рут, а видимость интревала в онмаусап нет?

this.onMouseDown = function() {
if (this.hitTest(_root._xmouse, _root._ymouse)) {
this.startDrag();
_root.tempID = this.id
var brr:Number= setInterval(function () {
trace("ggg")
_root.createEmptyMovieClip("line"+_root.tempID, -1100-_root.tempID);
_root["line"+_root.tempID].lineStyle(1, 0x559ADF);
_root["line"+_root.tempID].moveTo(_root["Obj"+_root.tempID]._x, _root["Obj"+_root.tempID]._y);
var NumberTo = Number(_root["Obj"+_root.tempID].linkTo);
_root["line"+_root.tempID].lineTo(_root["Obj"+NumberTo]._x, _root["Obj"+NumberTo]._y);
if (_root.tempflag == true){
clearInterval(brr)
delete brr;
}
}, 10);
}
};
this.onMouseUp = function() {
if (this.hitTest(_root._xmouse, _root._ymouse)) {
this.stopDrag();
_root.tempFlag = true;
clearInterval(brr);
delete brr;
}
};

silin
16.08.2005, 20:13
не понял (да и желания нет разбираться при такой постановке вопроса), что там у тебя происходит, но возможно трабл в том, что var brr, объявленная в onMouseDown, не видна в onMouseUp

Samodelkin
16.08.2005, 21:24
не понял (да и желания нет разбираться при такой постановке вопроса), что там у тебя происходит, но возможно трабл в том, что var brr, объявленная в onMouseDown, не видна в onMouseUp
В том-то и дело что не могу его увидеть пробовал и _root и _global, ошибка походу какета глобальная не могу понять где...

silin
16.08.2005, 21:32
давай внятный пример непонятки, будем разбираться..

Samodelkin
16.08.2005, 21:38
так исходник же выложил требуется протестировать как отрисовывать связи у графа, при большом колчистве элементов, отрисовывать все линии постоянно не реально, тормозить будет уже пробывал, вот и повесил сет интервал на маус даун пока пользователь двигает мышкой он работает интервал и отрисовывает связи, если ап, то интревал удалять. вот и все

silin
16.08.2005, 22:15
предположение: по onMouseDown ты запускаешь сразу много интервалов (хиттест true для многих), а по onMouseUp очищаешь тока один (потому как ты его мувик увел из кучи), остальные работают..
вариант:
определяем ( в руте, например) массив, в котором храним запущенные интервалы, по onMouseUp очищаем их:
this.onMouseDown = function() {
if (this.hitTest(_root._xmouse, _root._ymouse)) {
_root.objects.push(this);//массив, объявленный в руте
this.startDrag();
_root.tempID = this.id
this.brr= setInterval(function () {
trace("ggg")
_root.createEmptyMovieClip("line"+_root.tempID, -1100-_root.tempID);
_root["line"+_root.tempID].lineStyle(1, 0x559ADF);
_root["line"+_root.tempID].moveTo(_root["Obj"+_root.tempID]._x, _root["Obj"+_root.tempID]._y);
var NumberTo = Number(_root["Obj"+_root.tempID].linkTo);
_root["line"+_root.tempID].lineTo(_root["Obj"+NumberTo]._x, _root["Obj"+NumberTo]._y);
if (_root.tempflag == true){
clearInterval(brr)
delete brr;
}
}, 10);
}
};
this.onMouseUp = function() {
stopDrag();
_root.tempFlag = true;
var list=_root.objects
for(var i in list){
clearInterval(list[i].brr);
}

};
зы: по onMouseUp нада, наверное, _root.objects=[]

Samodelkin
16.08.2005, 23:44
все логично спасибо большое. иногда прсто необходим свежий взгляд, говорил же что-то глобальное:)