PDA

Просмотр полной версии : вопрос о swapDepth


mu_slim
25.02.2004, 12:14
Привет,
на сцене n дублированных мувиков.
n=10;
for(i=1,i<=n,i++){
dublicateMovieClip ("myMov", "myMov_" + i, i);
}
Удалим myMov_i. Теперь нужно чтобы myMov_10 переместился на depth 3 и поменял свое имя с myMov_10 на myMov_3. Что делаю:
on (press) {
unloadMovie(_root.myMov_3);
}
on (release) {
name_to_swap = "_root.myMov_10";
name_to_swap = eval(name_to_swap);
name_to_swap.swapDepths(3);
new_swap = "myMov_3";
name_to_swap._name = new_swap;
}
конда первый раз кликаю мувик(бывший myMov_10 а теперь myMov_3), то через trace видно, что все нормально, и depth и имя мувика изменились. Но при втором клике имя остается тем же а вот depth становится 11.
подскажите как сделать так чтобы depth не менялся
спасибо

Штрек
26.02.2004, 03:36
Ну у тебя при втором клике
eval(name_to_swap)==undefined// _root.myMov_10 -
не существует. Чего ж ты хочешь?
Как написал, так и есть.
Я так и не понял чего надо при втором клике/а третьем?/
и вообще чего надо? Чтоб скрипт срабатывал только один раз - поставь условие типа if(tttt==undefined){
работает скрипт;
tttt++;
} хотя это конечно элементарщина и чего тебе надо на самом деле можно только догадываться. :p

mu_slim
26.02.2004, 11:17
мувики на сцену грузятся при нажатии на кнопку А (сколько раз нажмем столько и загрузится), а удаляются при нажатии на кнопку Б, которая лежит в другом мувике - Меню.
Мувики - myMov_(i) можно перетаскивать на сцене (в каждом есть кнопка а на ней Drug & Drop). Так же их можно поворачивать и удалять.
Кликнув на мувик я его тем самым "выделяю", т.е передаю его адрес кнопке Б(в мувик Меню). Это делается для того чтобы кнопка знала какой именно из дублированных объектов следует удалить.
В myMov_(i) как я уже говорил есть кнопка, там такой код....
on (release){
....
_root.curSelDep = this.getDepth();//
_root.Menu.name_del = this;//

trace("thisDep="+_root.curSelDep);
trace("thisName=" +_root.Menu.name_del);
....
}
после удаления со сцены myMov_3 (с третьего уровня), на его место должен перейти myMov_10 (с 10-го) и изменить свое имя на myMov_3. Что происходит:
1. Удаляю, myMov_3 исчезает со сцены
2. Кликаю на myMov_10, trace показывает
thisDep=3
thisName=_level0.myMov_3
3. еще раз кликаю тотже мувик(перетащить например мне его захотело сь). теперь вижу
thisDep=11(????????????????)
thisName=_level0.myMov_3
в чем дело не соображу =((((

mu_slim
26.02.2004, 11:46
инетересно а когда я имя меняю у мувика, может быть флэш его стирает а потом грузит на самый верхний уровень???

Штрек
26.02.2004, 14:07
Оригинал написал(а) mu_slim
мувики на сцену грузятся при нажатии на кнопку А (сколько раз нажмем столько и загрузится), а удаляются при нажатии на кнопку Б, которая лежит в другом мувике - Меню.
Мувики - myMov_(i) можно перетаскивать на сцене (в каждом есть кнопка а на ней Drug & Drop). Так же их можно поворачивать и удалять.
Кликнув на мувик я его тем самым "выделяю", т.е передаю его адрес кнопке Б(в мувик Меню). Это делается для того чтобы кнопка знала какой именно из дублированных объектов следует удалить.
=((((
Ну это делается достаточно элементарно/см. исх./
А вот зачем менять дубликатам имена и вложенность -
въехать не могу.Объясни. ;)

mu_slim
26.02.2004, 14:57
да вот то то и оно, что это я уже сделал (немного не так как у тебя правда) и не стал бы беспокоить по пустяковым вопросам
делаю я конструктор. пользователь должен иметь возможность свободно манипулировать объектами myMov:сождавать, двигать, поворачивать и в любом порядке удалять их. (это я сделал)Дальше он переходит в другой фрейм, где мне нужно знать точное количество объектов их имена и координаты, чтобы я мог их сортировать.каждый myMove имеет переменные x, y, rotation. если он ничего не удалил со сцены то, их имена:

MyMov_1
MyMov_2
MyMov_3
...
MyMov_n
//тогда не трудно создать двумерный массив массив.
for(var k=0;k<nk++){
TRI = newArray(3);
TRI[0] = _root["myMove_"+k].x;
TRI[1] = _root["myMove_"+k].y;
TRI[2] = _root["myMove_"+k].rotation;
Big_array[k] = TRI;
}

а если он удалял:

MyMov_1
MyMov_5
MyMov_8
MyMov_9
....
MyMov_m

как тогда заполнить массив?
Другого пути кроме как переименовать объект я не придумал пока. а при переименовании начинается чехорда с уровнями.
т.е надо и переимновать и поменять уровень

Штрек
26.02.2004, 15:43
Оригинал написал(а) mu_slim
а если он удалял:

MyMov_1
MyMov_5
MyMov_8
MyMov_9
....
MyMov_m

как тогда заполнить массив?

Да также как если б не удалял, а потом его перебрать на предмет undefined. Детали щас посмотрю

Штрек
26.02.2004, 16:07
Глянь.
Осталось удалить пустые элементы.

mu_slim
26.02.2004, 19:00
Спасибо за помощ, массив получился, я и не знал, что по undefined можно ставить условие типа если == undefined то ..., и вообще массивы в actionScript достаточно гибкий инструмент. Я боялся что если я попытаюсь запихнуть в массив несуществующий объект (myMov_(i) который я удалил) то он ругаться будет. а на самом деле просто undifined сказал и пошел дальше

а еще мне очень понравилась строчка

_root["myMov_"+jjj]._name = _root["myMov_"+jjj]._name+1000;

я то наивный думал, что если делаешь unloadMovie, то ни мувика ни переменных в проигрывателе нет, а как видно он просто исчезает, зато trace() его замечательно видит.

Большое спасибо Штрек, что ты мне взялся помоч. что-то никто больше и не откликнулся :D

Штрек
26.02.2004, 19:12
Оригинал написал(а) mu_slim
Большое спасибо Штрек, что ты мне взялся помоч. что-то никто больше и не откликнулся :D
Они по татарски не понимают. :D

mu_slim
26.02.2004, 19:27
ну как это так не знать второй государственный ;)

Dimonius
26.02.2004, 20:22
Предлагаю Штрека назначить штатным переводчиком. :D

Штрек
26.02.2004, 21:04
Оригинал написал(а) Dimonius
Предлагаю Штрека назначить штатным переводчиком. :D

-- Тише, девушка! Женщину украшает скромность.
К чему эти прыжки? :p

mu_slim
26.02.2004, 22:28
а может курсы откроем и будем бабки рубить?
или так и быть бесплатно уроки опубликуем?

Штрек
26.02.2004, 22:32
Открывай форум - tatflash :p
и будет тебе счастье.