Форум 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)
-   -   attachMovie и onPress, почему не хотят жить вместе? (http://www.flasher.ru/forum/showthread.php?t=80760)

gfdrf 06.06.2006 23:35

Вложений: 1
Да так всё, так, и всё это я знаю и понимаю. И делал перетаскивание в клипах разной степени вложенности, и из рута, и из промежуточных клипов.
Блин, решил выложить пример, может он поможет.
В примере, уже есть клип "ас", помещенный вручную в клип "clip" (он в центре). Ему ручками присвоено instance name "ас".Его можно без проблем таскать мышкой.
При нажатии на волшебную кнопку, этот же клип из библиотки аттачится в клип "clip", т.е. точно туда же. И его нельзя таскать!
Однако волшебная кнопка, при повторном нажатии удаляет клип "ас". При этом удаляются ОБА клипа! Значит они оба "ас"! Но почему один можно таскать, а другой нет?
Не подумайте обо мне полохого, пожалуйста, пиво я не пил уже 2 дня...
Но вот такой клин... или засада...

iNils 06.06.2006 23:58

Когда ты пытаешь сделать аттач программно, ты назначаешь на него действия до появляения клипа. А это бесполезно.
Сначала аттач, потом вешаешь обработчик событий.

gfdrf 07.06.2006 00:09

Почти понял, но если можно, поподробней
Я же вроде сначала аттачу, потом уже пытаюсь пеоремещать?
Или я все же что то не понимаю? Истина где то рядом?

iNils 07.06.2006 00:22

Код:

aa.onPress = function () {
        if (i == 0 || i == undefined) {
                var mc = clip.attachMovie ("ac", "ac", 1);
                i = 1;
                mc.onPress = function () {
                        this.startDrag ();
                };
                mc.onRelease = function () {
                        this.stopDrag ();
                };
        } else {
                clip.unloadMovie ("ac");
                i = 0;
        }
};


gfdrf 07.06.2006 00:30

Опа, работает!
Огроменнейшее спасибо!
Коментов не требую, попытаюсь разобраться сам.
В очередной раз прошу пардону, просто для меня Flash хобби, а не способ зарабатывания денег, поэтому времени ему уделяется далеко не столько, сколько хотелось бы :-(

PS Уже всё понял.

Madasan 07.06.2006 00:48

И лучше не называть мувики одинаково, иначе можно получить подобный глюк, когда кажется что мувик удалился, а на самом деле трейс показывает что этот мувик существует.!(То есть это только на мониторе удалилось два мува, а на самом деле - один) Для удаления приаттаченого мувика cуществует removeMovieClip,(кстати если его применить подобной ситуации то с монитора не удалиться не один мувмув, пока не назовешь их по разному) а unloadMovie это применяется для выгрузки мува загруженного методом loadMovie.

iNils 07.06.2006 00:59

Цитата:

Сообщение от Madasan
То есть это только на мониторе удалилось два мува, а на самом деле - один

Вставь внутрь "ac" и проверь :)

Код:

if (!_global.flag){
        _global.flag = 0
}
this.flag = _global.flag++
this.onEnterFrame = function () {
        trace (flag)
}


Madasan 07.06.2006 01:43

Цитата:

Сообщение от iNils
Вставь внутрь "ac" и проверь :)

Да чего проверять, если мувы помещенные на таймлайн вручную, находятся на отрицательной глубине, и их хрен удалишь, если глубину на положительную не поменять, а unload... хэ...

iNils 07.06.2006 01:46

Я знаю про открицательные глубины, но ты все же вставь и посмотри.

Madasan 07.06.2006 02:27

Посмотрел, но не понял что должен был там увидеть :( Я вот еще дебаггер запустил, так там этот клип, что вручную помещен и находиться на отрицательной глубине в _root! - после unload - ВИСИТ,(вложенный в него удаляется, а тот что в _root - нет) и все свойства у него имеются, но при этом то что внутри типа код действительно не выполняется и на сцене его нет. :confused:


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

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