PDA

Просмотр полной версии : путаница в обращении к объектам


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
в mov1 есть 2 кейфрейма и между ними задан motion. там мувик mov2 движется из одной точки в другую.
так вот, позиция mov2 во втором кейфрейме должна должна изменяться в зависимости от кол-ва подгруженных картинок в него, эта величина у меня есть в переменной.То есть вы программно хотите изменить координаты для объекта который двигается с помощью motion tween в таймлайне? Этого сделать нельзя. Нужна только полностью программная анимация.