Просмотр полной версии : MoveClip.prototype
Есть такой код он скрывает/отображает объекты на карте в пределе видимости, ну чтоб не тормозило:
var squareVisible:Function = function () {
// проверяется местоположение клипа
if (this._parent._parent == map) {
this._visible = (this.hitTest(qRamka)) ? true : false;
}
};
// перемещаю карту мышкой
MovieClip.prototype.onMouseUp = squareVisible;
Как можно вызывать эту функцию кроме onMouseUp, например карта смещена и мне нужно опять отобразить объекты!?
вызавай при окончании перемещения просто как функцию, можно прада её параметрами обогатить :)
так в этом и проблема не получается просто так вызывать т.к. передается this и это получается для всех клипов свой!!
ну для каждого мувика свое: можешь не this а допустим for попробовыть для каждого мувика, и времени то на это не очень много понадобиться...
вот и мне кажется лучше код выложить, правда у меня сейчас МХ стоит, но по этому поводу я почти на все отвечу.
пробовал 8, но работодатели опять поросили перейти на МХ :)) судьба видимо такая...
for не прокатит! так как клипов оооочень много!! порядка 100 штук! цикл тут застрянет и имена все знать надо!!
100? это очень много?
ну можно на них повесить процедуру имено для них а не для др мувиков
имена всегда все надо запоминать и по ним потом надо что нить выполнять
процедуру или какой нить setInterval
я имел ввиду не 100, а порядка 100 000! а имена узнать не проблема, но с этим цикл думаю не справится! пробовал как нибудь запихать MovieClip.prototype в setInterval, но пока не получатся! а без всякого MovieClip.prototype работает очень хорошо! и не ощутимо для проца!
squareVisible.apply (имя клипа)
screamge
25.11.2006, 21:51
я так думаю тебе больше подойдёт for (i in _root). Думаю этот цикл будет работать лучше чем цикл for.
мне не нужно через имена клипов!
MovieClip.prototype.onMouseUp = squareVisible;
тут если кто думает что MovieClip - это имя клипа то это не так!
MovieClip.prototype - относится ко вообще всем клипам!
поэтому и работает без имён!
MovieClip.prototype.onMouseUp = squareVisible;
тут если кто думает что MovieClip - это имя клипа то это не так!
MovieClip.prototype - относится ко вообще всем клипам!
поэтому и работает без имён!
мне не нужно через имена клипов!тогда я не понимаю чего вы и как хотите. Давайте, объясните еще раз.
так вот с тем кодом что я оставил в начале все работает только оно реагирует на событие .onMouseUp это мне и нужно! но так же нужно что функция squareVisible запускалась не только по onMouseUp, но и при других обстоятельствах например карта переместиться без участия мыши и клавы! просто так запускать squareVisible() не годиться так как в ней есть this а это получается относиться ко всем клипам!
Мне нужно чтото вроде:
MovieClip.prototype.on...(какоето определенно событие) = squareVisible;
onEnterFrame не подходит так как сильно тормозит!
я перемещаю карту через
var twn_x:Tween = new Tween(map, "_x", Regular.easeOut, Math.round(map._x), -newX, 1, true);
twn_x.onMotionFinished = function() {
//а тут надо чтоб запустилась функция squareVisible
}
Я дал ответ здесь http://www.flasher.ru/forum/showpost.php?p=591332&postcount=8
Имя по любому придется указывать.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.