Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Мувик следит за мувиком (http://www.flasher.ru/forum/showthread.php?t=89729)

Ksюta 21.12.2006 23:08

Мувик следит за мувиком
 
Проблема такая... На сцене имеются два приатаченых мувика, движением первого из них управляет клавиатура. Нужно заставить второй мувик повторять (копировать) движения первого. Думала сначала просто продублировать функции управляемого мувика во второй, чтобы они тогда уж оба слушали клаву... но что то кажется мне, что это не очень грамотно... Есть ли еще какой способ?

CCCPirate 21.12.2006 23:19

Можно привязать их x и y координаты,

Или что бы слушатель изменял определенную переменную, которую будешь прибавлять к их координатам

Ksюta 22.12.2006 00:30

Большой спасиб!)
в неподвижный мувик прописала что то вроде:
Код:

onClipEvent(enterFrame) {
this._x=_root.mc._x;
this._y=_root.mc._y;
}

работает))

Llex3D 22.12.2006 00:42

для того что поторяет ( к примеру mov2 следит за mov1):


Код:

mov2.onEnterFrame = function(){
    _x = _root.mov1._x;
    _y = _root.mov1._y;
}


и никаких проблем :)

Llex3D 22.12.2006 00:43

пока набирал, у тебя решение само нашлось :)

Ksюta 22.12.2006 00:56

так тоже хорошо, и мож даже лучше)
вот кстати еще вопрос...
знаю что onClipEvent(enterFrame) грузит проц, потому как непрерывно выполняется.
А в варианте mc.onEnterFrame = function нагрузка меньше?
можно ли что-то вообще другое использовать вместо enterFrame и все ли onClipEventы грузные?
и еще как то говорят удалить можно эту функцию... насколько это действенно?

Aziz Zaynutdinoff 22.12.2006 01:20

onClipEvent(enterFrame) = .onEnterFrame :)

Бегемот и гиппопотам... первая конструкция onClipEvent - считается устаревшей. Так как не есть возможность повесить событие на созданный программным путём MovieClip

удаляется очень просто.
Пример:
Код:

var mc:MovieClip = this.createEmptyMovieClip("box_mc", this.getNextHighestDepth());
with(mc){
  //рисуем квадрат
}
mc.onEnterFrame = function(){
    this._x++;
    if(this._x > 300){
        trace("На этом движение закончено");
        delete this.onEnterFrame;
    }
}

Альтернативой onEnterFrame, может послужить setInterval
Пример:
Код:

var mc:MovieClip = this.createEmptyMovieClip("box_mc", this.getNextHighestDepth());
with(mc){
  //рисуем квадрат
}
var intervalID:Number = setInterval(move_mc, 30, mc);

function move_mc(_mc:MovieClip):Void{
    _mc._x++;
    if(_mc._x > 300){
      trace("На этом движение закончено");
      clearInterval(intervalID);
    }
}

Приемущество setInterval в том, что там вы можете указать время в милисекундах, а в onEnterFrame время за которое происходит цикличность обусловлена установленным fps (framerate)

Storm[pfp] 22.12.2006 02:28

а еще можно можно поизвращаться с startDrag
по startDrag начинаем перемещать mc2 setInterval'ом
по stopDrag удаляем setInterval

поидее когда не трогаешь , проц не напрягается . . .

vic_ 22.12.2006 03:43

если со startDrag то лучше onMouseMove
а еще лучше оба клипа в один общий поместить и его таскать

Storm[pfp] 22.12.2006 04:51

Цитата:

Сообщение от vic_
еще лучше оба клипа в один общий поместить и его таскать

это если тупо один за другим таскать , а если с эффектами . . . замедление, шлейф и т.д.


Часовой пояс GMT +4, время: 08:33.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.