Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.07.2012, 13:45
Sergey_A вне форума Посмотреть профиль Отправить личное сообщение для Sergey_A Найти все сообщения от Sergey_A
  № 1  
Ответить с цитированием
Sergey_A

Регистрация: Jun 2010
Сообщений: 128
Question Как в кадре мувика получить ссылку на самого себя

Помогите, пожалуйста.
Хочу, чтобы после проигрывания мувик удалялся. В его последнем кадре пишу:
Код AS1/AS2:
this.removeMovieClip();
Но this почему-то ссылается на _level0.main.instance10, а не на сам мувик - он, соответственно, не удаляется (в main он аттачится из другой функции программно).
Можно ли еще как-то получить ссылку на сам мувик в его кадре?
Заранее спасибо.

Старый 04.07.2012, 14:02
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
this однозначно ссылается на текущий объект, в котором он выполняется.
Если что-то идет не так, то проблема в чем-то другом.

Если у вас мувик аттачится программно, то у него должно быть какое-то имя, отличное от instance10, поскольку метод attachMovie предполагает явное задание имени экземпляра.
Отсюда возможный вывод - значит это уже другой мувик, а именно instance10.
Почему так происходит у вас - сказать нельзя, не видя всю картину. И надо искать не способ "еще как-то получить ссылку", а разобраться, почему вы аттачите один мувик, а там у вас в какой-то момент появляется другой экземпляр того же библиотечного символа.

Однако есть такой метод, который поможет удалить даже мувик, созданный в авторской среде (то есть даже вынесенный на сцену руками).
Код AS1/AS2:
//выносим на глубину, с которой можно программно удалить, потом удаляем
mc.swapDepths(mc._parent.getNextHighestDepth()); 
mc.removeMovieClip();
Попробуйте так сделать, заменив тут mc на this.
__________________
Идите первым!


Последний раз редактировалось mooncar; 04.07.2012 в 14:09.
Старый 04.07.2012, 14:23
lexa2000lexa вне форума Посмотреть профиль Отправить личное сообщение для lexa2000lexa Найти все сообщения от lexa2000lexa
  № 3  
Ответить с цитированием
lexa2000lexa

Регистрация: Sep 2005
Сообщений: 950
Есть подозрение что у вас в клип который вы атачиться вложен клип с анимацией, соответственно вы пытаетесь удалить анимации а не клип в которой это анимация находиться, попробуйте вот так
Код AS1/AS2:
_parent.getNextHighestDepth()
вместо
Код AS1/AS2:
this.getNextHighestDepth()

Старый 04.07.2012, 14:32
Sergey_A вне форума Посмотреть профиль Отправить личное сообщение для Sergey_A Найти все сообщения от Sergey_A
  № 4  
Ответить с цитированием
Sergey_A

Регистрация: Jun 2010
Сообщений: 128
Нет, так тоже не работает. Приведу кусок кода побольше:
Код AS1/AS2:
intens = 300;
e_num = 0;
function em()//функция дождя
{
	_root.main.attachMovie("drop","drop"+_root.e_num,_root.e_num);
	_root.main["drop"+_root.e_num]._x=random(37)+177;
	_root.main["drop"+_root.e_num]._y=random(3)-90;
	_root.e_num++;
}
Главная функция (часть):
Код AS1/AS2:
var C_Params = new LoadVars();
function Change_C_Params()
{
	C_Params.load("..........");
}
 
setInterval(Change_C_Params,1000);
var em_timer;
 
C_Params.onLoad = function()
{
 
	if (C_Params[i].toString().charAt(0) == "T") {
		_root.em_timer=setInterval(em,intens);
	}
	else {
		clearInterval(_root.em_timer);
	}
 
}
Ну и в мувике drop в последнем кадре -
Код AS1/AS2:
this.removeMovieClip();
Мувики добавляются, но не удаляются - их количество все время растет.

Добавлено через 2 часа 28 минут
Разобрался в чем дело - просто несколько раз подряд отрабатывала команда.
Код AS1/AS2:
_root.em_timer=setInterval(em,intens);
Добавил флаг состояния переменной, и все заработало нормально.
Спасибо за помощь.


Последний раз редактировалось mooncar; 04.07.2012 в 16:57.
Создать новую тему Ответ Часовой пояс GMT +4, время: 20:23.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
removeMovieClip

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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