Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   вопрос о swapDepth (http://www.flasher.ru/forum/showthread.php?t=55111)

mu_slim 25.02.2004 12:14

вопрос о swapDepth
 
Привет,
на сцене 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

Re: большое спасибо за ответ, но....
 
Вложений: 1
Цитата:

Оригинал написал(а) 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

Вложений: 1
Глянь.
Осталось удалить пустые элементы.

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

Re: большое спасибо
 
Цитата:

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


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

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