Форум 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=89981)

footer 28.12.2006 13:11

путаница в обращении к объектам
 
у меня есть мувик2, вложенный в мувик1.
из _root выполняю код который вставляет jpeg в мувик2.

выглядит это все вот так:

Код:

for (i=1; i<=num; i++) {
        createLogo(i, xleft);
}

function createLogo (id, xleft) {
        _root.mov1.mov2.createEmptyMovieClip("logo"+id, id);
        _root.mov1.mov2.loadMovie("images/logo"+id+".jpg", "logo"+id);
        setProperty(this["logo"+id], _x, xleft);
}

ну или так

Код:

for (i=1; i<=num; i++) {
        createLogo(i, xleft);
}

function createLogo (id, xleft) {
        _root.mov1.mov2.createEmptyMovieClip("logo"+id, id);
        _root.mov1.mov2.loadMovie("images/logo"+id+".jpg", "logo"+id);
        setProperty(_root.mov1.mov2["logo"+id], _x, xleft);
}

картинка подгружается, а вот параметры не задаются. я думаю что накосячил с обращением к обьекту, но не знаю как правильно обратиться?

мне еще потом надо будет событие на подгруженную картинку повесить, это можно будет сделать из _root ??? как?

а то _root.mov1.mov2["logo"+id].onPress = function () { ... }
тоже что-то не работает ))

помогите плиз, разобраться где я туплю :)

iNils 28.12.2006 13:17

Код:

function createLogo (id, xleft) {
        var mc:MovieClip = _root.mov1.mov2.createEmptyMovieClip ("logo" + id, id);
        mc.loadMovie ("images/logo" + id + ".jpg");
        mc_x = xleft;
}


footer 28.12.2006 13:55

спасибо! теперь работает, но все равно осталась одна проблемка.
мне нужно на каждую подгруженную картинку повесить по 2 события: onRollOver и onPress

Код:

function createLogo (id, xleft) {
        var mc:MovieClip = _root.logobox.logo.createEmptyMovieClip ("logo" + id, id);
        mc.loadMovie ("images/logo" + id + ".jpg");
        mc._x = xleft;
        mc._y = 3;
        mc.onPress = function () {
                getURL("http://www.ya.ru/");
        }
}

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

iNils 28.12.2006 14:07

Вешать событие на клип в который еще не закончилась загрузка нельзя. Поэтому либо надо использовать класс MovieClipLoader и его событие onLoadComplete. Либо вешать onPress не на mc, а на его предка.

footer 28.12.2006 15:06

ага, разобрался - все работает, сделал вот так:

Код:

function createLogo (id, xleft) {
        var mc:MovieClip = _root.mov1.mov2.createEmptyMovieClip ("logo" + id, id);
        var loader:MovieClipLoader = new MovieClipLoader();
        var listener:Object = new Object();
        loader.addListener(listener);
        loader.loadClip("images/logo" + id + ".jpg", mc);

        mc._x = xleft;
        mc._y = 3;

        listener.onLoadComplete = function(mc:MovieClip) {
                mc.onPress = function () {
                        getURL(_root["url"+id]);
                }
        };
}

есть еще один вопрос на ту же тему: как достучаться до обьекта...

в mov1 есть 2 кейфрейма и между ними задан motion. там мувик mov2 движется из одной точки в другую.
так вот, позиция mov2 во втором кейфрейме должна должна изменяться в зависимости от кол-ва подгруженных картинок в него, эта величина у меня есть в переменной.

как мне изменить параметр _x у mov2 именно во втором кейфрейме, а в первом он должен остаться на месте?
я пробывал задать mov2 другой instance name и обратиться именно к нему, но кажется не работает:
Код:

_root.mov1.mov2_end._x = xleft;
видимо нужно писать код именно в том 2-м кейфрейме, но не пойму, может этот код там на событие какое-нибудь надо повесить?

p.s. возможно элементарные вопросы, но просто я с action script знаком 2-й день, а работа горит и нет времени чтобы внимательно почитать учебники, пока просто подглядываю справку по функциям или готовые решения на форумах.

iNils 28.12.2006 15:14

Цитата:

Сообщение от footer
в mov1 есть 2 кейфрейма и между ними задан motion. там мувик mov2 движется из одной точки в другую.
так вот, позиция mov2 во втором кейфрейме должна должна изменяться в зависимости от кол-ва подгруженных картинок в него, эта величина у меня есть в переменной.

То есть вы программно хотите изменить координаты для объекта который двигается с помощью motion tween в таймлайне? Этого сделать нельзя. Нужна только полностью программная анимация.


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

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