Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Элементы отображения вектора (http://www.flasher.ru/forum/showthread.php?t=209722)

neonoviiwolf 12.12.2014 15:13

Элементы отображения вектора
 
Добрый день, меня вопрос интересует, есть ли возможность узнать, какие элементы из вектора добавлены на сцену, какие нет?

костыли я могу легко сделать, типо булевскую переменную введу дополнительно в класс или второй вектор-массив, где буду хранить индексы выведенных на экран объектов

Gerbert 12.12.2014 15:32

Если предположить, что под "вектор" Вы подразумеваете типизированный массив, а не векторную графику,
то способов будет много, но все они либо завися от архитектуры, либо её навязывают.
Самое простое и эффективное, сделать класс-добавлятор-удалятор и в нем проверять на принадлежность
к интерфейсу. Если не делать такого класса и продолжить дальше делать предположения о том, что в массиве
у Вас находятся объекты одного типа, то можно при добавлении их в дисплей лист не удалять из массива,
а уменьшать значение свойства текущего элемента. Взяли один элемент по текущему значению, уменьшили
его, удалили его из дисплей листа, прибавили на одно. И так получится, что те, которые находятся в диапазоне
от этого самого свойства до длины массива и есть объекты, которые в списке отображения.

neonoviiwolf 12.12.2014 15:45

Gerbert спасибо, видно я не так написал, у меня вектор одинаковых элементов и они должны оставаться там, т.к. это пул, я пытаюсь написать код, который при срабатывании определённого события (в данном случаи выход за пределы сцены) удаляет элементы со сцены (вектор то мы не трогаем). Просто сейчас сыпется куча предупреждения, что невозможно "Cannot access a property or method of a null object reference." т.к. я не могу получить координаты объектов, которых нет на сцене. Так вот всё что нужно мне - это сделать проверку условия, находиться ли элемент на сцене. Костыль сделать займёт 5 мин, но есть какой либо метод, который именно для этого и предназначен

Gerbert 12.12.2014 16:05

Проверить, это if( object.stage != null )...
Но скорее всего, Вы что-то неправильно делаете
раз появилась потребность проверять на наличие
в дисплей листе...

neonoviiwolf 31.12.2014 17:22

Цитата:

Сообщение от Gerbert (Сообщение 1176232)
Проверить, это if( object.stage != null )...
Но скорее всего, Вы что-то неправильно делаете
раз появилась потребность проверять на наличие
в дисплей листе...

не работает
написал
Код AS3:

                        var i =vector_bullet.length;
                        while (--i > -1) {
 
                                if (vector_bullet[i].stage != null) {
                                        *************
                    }
            }

функция соответственно в энтер_фрейме, цикл работает, но условие всегда false выходит

PsychoTech 31.12.2014 20:13

извиняюсь за оффтоп но:
Цитата:

while (--i > -1)
это приемлемая форма записи условия?

in4core 01.01.2015 00:19

Цитата:

это приемлемая форма записи условия?
Да. Помоему даже адоб в своих методах оптимизации так советовал писать

neonoviiwolf 03.01.2015 11:39

Народ, ну помогите, плиз

Tails 03.01.2015 15:29

Код AS3:

//var vector:Vector.<Sprite>;
 
var i:uint = vector.length;
while(i-- > 0){
    if(vector[i] && vector[i].stage){
        trace(vector[i] + " добавлен на сцену");
    }else{
        trace(vector[i] + " не добавлен на сцену");
    }
}


neonoviiwolf 05.01.2015 14:24

Tails всегда выводит, что объект не добавлен на сцену, хотя они появляются на сцене. Вектор содержит пульки, они добавляются на сцену во время игры, в чём может быть дело?


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

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