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

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

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

Регистрация: Mar 2013
Сообщений: 157
По умолчанию Удалить все объекты со stage

здравствуйте

Меня интересует вопрос, как можно удалить все объекты со stage, чтобы остался чистый "белый лист", тобиж пустая сцена.

У меня возникало в голове несколько вариантов, например с использованием stage.removeChildAt( ); и цикла с использованием stage.numChildren>=0, но думаю это не совсем правильная идея.

Я проверил, и некоторые объекты остаются на сцене. подскажите пожалуйста способ удаления всех объектов со сцены.

Спасибо.

Старый 25.10.2013, 01:40
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 2  
Ответить с цитированием
Akopalipsis
Banned

Регистрация: Mar 2013
Сообщений: 1,864
На stage добавлять не чего нельзя! Категорически запрещается делать stage.addChild().
Создайте контейнер из спрайт и в него добавляйте, что бы удалить всех его детей
Код AS3:
container.removeChildren();

Старый 25.10.2013, 01:47
art_maestro вне форума Посмотреть профиль Отправить личное сообщение для art_maestro Найти все сообщения от art_maestro
  № 3  
Ответить с цитированием
art_maestro

Регистрация: Mar 2013
Сообщений: 157
Спасибо за совет!

Старый 25.10.2013, 01:55
belv вне форума Посмотреть профиль Отправить личное сообщение для belv Найти все сообщения от belv
  № 4  
Ответить с цитированием
belv

Регистрация: Oct 2005
Сообщений: 217
Если Вам нужно удалить все объекты из контейнера, удаляются циклом.
Код AS3:
var numChildrenInContainer = container.numChildren;
for(var i:int=0; i<numChildrenInContainer; i++)
{
    container.removeChildAt(0);
}

Старый 25.10.2013, 02:01
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 5  
Ответить с цитированием
Akopalipsis
Banned

Регистрация: Mar 2013
Сообщений: 1,864
belv а можно Вас спросить, Вы свой ответ дали с целью обучения ТС.
Или у removeChildren есть недостатки по сравнению с removeChildAt ?

Старый 25.10.2013, 02:03
art_maestro вне форума Посмотреть профиль Отправить личное сообщение для art_maestro Найти все сообщения от art_maestro
  № 6  
Ответить с цитированием
art_maestro

Регистрация: Mar 2013
Сообщений: 157
С контейнера я удалю, я так и предполагал. Но все равно спасибо!
Суть проблемы в том, что мне нужно выполнить как бы перезагрузку swf файлика. получается удалить все и загрузить новое содержимое. Загрузка удалась, а вот корректно удалить все пока не могу, буду переделывать.

Может есть функция, которая как бы "перезагружает" swf файл, возвращаясь к первоначальному состоянию?

Старый 25.10.2013, 03:56
GrafMine вне форума Посмотреть профиль Отправить личное сообщение для GrafMine Найти все сообщения от GrafMine
  № 7  
Ответить с цитированием
GrafMine
 
Аватар для GrafMine

Регистрация: Jan 2011
Сообщений: 247
Цитата:
Сообщение от art_maestro Посмотреть сообщение
С контейнера я удалю, я так и предполагал. Но все равно спасибо!
Суть проблемы в том, что мне нужно выполнить как бы перезагрузку swf файлика. получается удалить все и загрузить новое содержимое. Загрузка удалась, а вот корректно удалить все пока не могу, буду переделывать.

Может есть функция, которая как бы "перезагружает" swf файл, возвращаясь к первоначальному состоянию?
один раз пришлось воспользоваться таким вариантом, выполнив полную очистку игры до этого метода
Код AS3:
stage.addEventListener(KeyboardEvent.KEY_DOWN, reload);
 
function reload(e:KeyboardEvent):void
{
    if(e.keyCode == Keyboard.SPACE)
    {
        var myLoader:Loader = new Loader(); 
        addChild(myLoader); 
        var url:URLRequest = new URLRequest("mySwf.swf"); 
        myLoader.load(url); 
    }
}
я часто использую вот такой например вариант, может пригодиться...
Код AS3:
for (var n:int = array.length - 1; n >= 0; n--) {
var sprite:Sprite = array[n];
array.splice(n, 1);
if(sprite.parent){					
sprite.parent.removeChild(sprite);
}

Старый 25.10.2013, 04:20
Koopa вне форума Посмотреть профиль Найти все сообщения от Koopa
  № 8  
Ответить с цитированием
Koopa
Banned

Регистрация: Apr 2012
Сообщений: 162
Цитата:
Сообщение от GrafMine Посмотреть сообщение
я часто использую вот такой например вариант, может пригодиться...
Код AS3:
for (var n:int = array.length - 1; n >= 0; n--) {
var sprite:Sprite = array[n];
array.splice(n, 1);
if(sprite.parent){					
sprite.parent.removeChild(sprite);
}
Етить через коромысло...
Чем вам не угодил:
Код AS3:
for (var i:int=0;i<array.length;i++)
и зачем проверять родителя спрайта? Он есть у него или должен быть ибо зачем спрайт?

Старый 25.10.2013, 02:36
belv вне форума Посмотреть профиль Отправить личное сообщение для belv Найти все сообщения от belv
  № 9  
Ответить с цитированием
belv

Регистрация: Oct 2005
Сообщений: 217
А что такое emoveChildren?

Старый 25.10.2013, 02:44
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 10  
Ответить с цитированием
Akopalipsis
Banned

Регистрация: Mar 2013
Сообщений: 1,864
Цитата:
А что такое emoveChildren?
Как это что?) Нативный метод удаления всех элементов контайнера, который наверняка точно так же
и устроен - получил кол-во детей, удалил в цикле. С моей стороны кажется, что нативный должен быть капельку быстрей, так как он со стороны программы работает ( но так, как я не знаю как именно, возможно он обходными путями получает информацию ), но и не исключено, что и наоборот. Вот я и спросил, думал возможно кто то замерел скорость выполнения и не пожалеет ей поделится.

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

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

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


 


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


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