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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 31.10.2013, 23:48
belv вне форума Посмотреть профиль Отправить личное сообщение для belv Найти все сообщения от belv
  № 21  
Ответить с цитированием
belv
[+1 16.07.13]
[+4 16.07.13]

Регистрация: Oct 2005
Сообщений: 217
Да вот тут и учат во втором посте
http://www.flasher.ru/forum/showthre...E8%EA%EB%EE%EC

Старый 31.10.2013, 23:49
Маруська вне форума Посмотреть профиль Отправить личное сообщение для Маруська Найти все сообщения от Маруська
  № 22  
Ответить с цитированием
Маруська

Регистрация: Feb 2012
Сообщений: 205
Цитата:
Сообщение от Котяра Посмотреть сообщение
Код AS3:
var Definition:Class  = getDefinition("page_" + String(i)) as Class; // получаем ссылку на класс
var pg:DisplayObject = new Definition();
как круто!!


Код AS3:
for(var i:int = 1; i<bt.length;i++)
{
   addChild(bt[i]);
   bt[i].addEventListener(MouseEvent.CLICK, loadMC);
 
function loadMC(e:MouseEvent):void
{  
   var currentNumber:int;
   for(var i:int = 1; i<bt.length; i++)
   {removeChild(pg[i]);//необходимо удалить все подгруженные мувики
	   if(e.currentTarget.name == ['bt'+i]) {currentNumber = i;}
   };
   addChild(pg[currentNumber])//и добавить тот, который соответствует нажатой кнопке
}
}
Ошибка: as 3.0 The supplied DisplayObject must be a child of the caller.

Старый 31.10.2013, 23:59
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 23  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Ошибочка вышла. не getDefinition, а getDefinitionByName. зарапартовался.
Код AS3:
var Definition:Class  = getDefinitionByName("page_" + String(i)) as Class; // получаем ссылку на класс
var pg:DisplayObject = new Definition();
__________________
Отряд Котовскага

Старый 01.11.2013, 00:04
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 24  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Функции никогда не вкладывайте никуда. Они всегда должны быть отдельно. А у вас функция обьявлена в цикле.
Обычно эта ошибка возникает когда вы пытаетесь удалить родительский элемент, вызывая removeChild у ребенка.
Если так и есть, пробуйте вызвать removeChild у того обьекта, ребенком которого он на самом деле является.
Если это главная линия времени, то (root as MovieClip).removeChild();

Старый 01.11.2013, 00:26
Маруська вне форума Посмотреть профиль Отправить личное сообщение для Маруська Найти все сообщения от Маруська
  № 25  
Ответить с цитированием
Маруська

Регистрация: Feb 2012
Сообщений: 205
Цитата:
Сообщение от SuriTheAngel Посмотреть сообщение
Обычно эта ошибка возникает когда вы пытаетесь удалить родительский элемент, вызывая removeChild у ребенка.
Если так и есть, пробуйте вызвать removeChild у того обьекта, ребенком которого он на самом деле является.
Если это главная линия времени, то (root as MovieClip).removeChild();
вот ещё со времён изучения delphi не понимала наследования =((
кто у меня материнский объект для моего pg?

Старый 01.11.2013, 00:48
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 26  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Наследование это нечто другое. А здесь просто стоит понять иерархию DisplayList.
У вас, допустим, есть мувиклип на главной линии времени.
В нем вы хотите удалить его самого со сцены. Пишите интуитивно removeChild(this), и выскакивает подобная ошибка. А все потому, что в списке отображения данного обьекта нет еще одного элемента с таким же именем экземпляра.
На самом деле этот обьект находится на главной линии времени, и, чтобы удалить его, мы должны обратиться к ней.
(root as MovieClip).removeChild(this);

Старый 01.11.2013, 01:09
Маруська вне форума Посмотреть профиль Отправить личное сообщение для Маруська Найти все сообщения от Маруська
  № 27  
Ответить с цитированием
Маруська

Регистрация: Feb 2012
Сообщений: 205
всё равно не понимаю.
Если я просто делала
Код AS3:
addChild(pg)
то как мне его теперь удалять?

removeChild(pg);, (root as MovieClip).removeChild(pg); и parent.removeChild(pg)- выдаёт ошибку Parameter child must be non-null.

ошибка The supplied DisplayObject must be a child of the caller перестала появляться

Старый 01.11.2013, 01:23
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 28  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Вы в том же символе делали addChild(pg)?
Обратитесь к тому символу, где вы делали addChild(pg);

Добавлено через 2 минуты
И не забудьте, что pg в том символе != pg в этом символе, а значит, если addChild(pg); там, то и обращение туда же должно
происходить.

theSymbol.removeChild(theSymbol.pg);

Добавлено через 16 минут
Меня вдруг осенило. Эта же ошибка вылазит, когда обьекта и так нет на сцене, а вы его пытаетесь удалять.

Добавлено через 36 минут
Цитата:
for(var i:int = 1; i<bt.length; i++)
И вот это вы зря. Этот код недовыполнится один раз. Поменяйте 1 на 0.

На вашем месте, я бы создал пустой символ в библиотеку, и делал бы addChild в него.
а там, где нужно, я бы чистил его полностью.

Добавлено через 46 минут
В этом символе описать метод clear():
while(numChildren > 0)
{
removeChildAt(0);
}

И вызывать этот метод вместо removeChild(...[i]);

Старый 01.11.2013, 02:22
Маруська вне форума Посмотреть профиль Отправить личное сообщение для Маруська Найти все сообщения от Маруська
  № 29  
Ответить с цитированием
Маруська

Регистрация: Feb 2012
Сообщений: 205
здесь же, в основном таймлайне и создаю, никаких уровней не добавляю.

решение найдено!
Код AS3:
addChildAt(mc,_layer); 
removeChildAt(mc,_layer);
и не надо искать и мучиться =)

Старый 01.11.2013, 02:27
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 30  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
О, бог. Вы меня хорошо так утомили

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

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

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


 


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


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