Форум 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)
-   -   Как приаатачить клип в клип после загрузки в него jpg? (http://www.flasher.ru/forum/showthread.php?t=117188)

Жень Шень 21.10.2008 13:54

Как приаатачить клип в клип после загрузки в него jpg?
 
Привет!
В мувик на сцене загрузил MovieClipLoader-ом картинку (jpg). Возникла необходимисть приаттачить в этот клип другой клип из библиотеки. И не получается.
Код:

var mclListener:Object = new Object();
mclListener.onLoadInit = function(target_mc:MovieClip) {
        image_mc._xscale = image_mc._yscale=50;
        image_mc._x = 100;
        image_mc._y = 100;
        image_mc.onPress = function() {
                // пробую сразу подгрузить и клип-маркер
                this.attachMovie("gmarcer", "gmarcer", 1000);
                trace("1 "+this.gmarcer);
                this.startDrag();
        };
        image_mc.onRelease = function() {
                this.stopDrag();
        };
};
var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mclListener);
// загрузка картинки
b_btn.onPress = function() {
        image_mcl.loadClip("1.jpg", image_mc);
};
// до загрузки картинки gmarcer аттачится, после нет
b1_btn.onPress = function() {
        image_mc.attachMovie("gmarcer", "gmarcer", 1000);
        trace("2 "+image_mc.gmarcer);
};

Это упрощенный код.
Подскажите, где грабли. Спасибо.

iNils 21.10.2008 14:23

Грабли в том, что этого сделать просто нельзя. После загрузки в клип объекта, сам клип подменяется этим объектом. Если бы грузили не картинку, а swf, то аттач бы произошел не в image_mc, а в рут самого swf. А так как грузим картинку, то аттачить просто некуда.

Поэтому есть два выхода, либо создавать отдельный контейнер для картинки, либо грузить картинку, снимать с нее битмапДату, выгружать картинку и аттачить битмап и символ из библиотеки.

silin 21.10.2008 14:45

грабли в том, что приаттачить к загруженному можно только из его же библиотеки
(с swf будет та же история)

если грузить в контейнер, созданный для картинки, то сам image_mc будет 'своим' и все получится
image_mcl.loadClip("1.jpg", image_mc.createEmptyMovieClip("body", 0));

Жень Шень 21.10.2008 14:51

Спасибо, iNils.
Я в принципе так и делал. В контейнере паралельном клипу для картинки грузились 4 клипа-маркера. Ими я масштабировал кртинку. добрый кусок кода отвечал за совмещения двух клипов: картинки и контейнера с маркирами. Когда возникла необходимость группировки нескольких клипов (задача гоуппировки решена), захотелось помечать клипы в группе. Снова использовать контейнер с маркирами не хотелось из-за кода. Там, где в гуппу входили клипы и програмная графика все тип-топ, а с jpg - облом. Это на стадии разработки надо было предусмотреть. А сейчас надо перелапатить около 2000 строк для добавления еще одного контейнера. Что самое обидное - к клипу с загруженной джепежкой обращаешься как к клипу, а он уже и не клип...
Добавлено:
Ой, уважаемый гуру silin что-то дабавил. Спасибо, сейчас буду пробовать.

silin 21.10.2008 14:57

>>обращаешься как к клипу, а он уже и не клип...
не, он клип, у него все(свойства/методы) есть, кроме доступа к библиотеке основного

iNils 21.10.2008 14:58

Цитата:

Сообщение от silin (Сообщение 771796)
грабли в том, что приаттачить к загруженному можно только из его же библиотеки...

Кстати да :rolleyes:

silin 21.10.2008 15:06

есть хаковый выход:
аттачить от имени родителя, но в себя же
target_mc._parent[target_mc].attachMovie("gmarcer", "gmarcer", 1000);

UPD: не работает так, сори

chingachgoog 21.10.2008 15:29

Цитата:

Сообщение от silin (Сообщение 771803)
есть хаковый выход:
аттачить от имени родителя, но в себя же
target_mc._parent[target_mc].attachMovie("gmarcer", "gmarcer", 1000);

Не понял в чем выход? Обмануть самого себя? Хочу аттачить в target_mc (image_mc), но все равно приатачу в рут? :)

silin 21.10.2008 15:34

сори, не выход это никакой - померещилось..
спасибо, chingachgoog

iNils 21.10.2008 15:50

Как минимум, писать надо так
Код:

target_mc._parent["target_mc"]
Но все равно это не хак.


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

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