PDA

Просмотр полной версии : Как узнать, содержит ли контейнер детей?


DZHETIGAPA
31.12.2010, 19:05
Вопросы по contains и Timer

Решил сделать простенькую-корявенькую змейку. Вот код:

var shar:MovieClip = new Sharik();
var i:int = 0;
var j:int = 0;
var t:Timer = new Timer(200,0);

addEventListener(Event.ENTER_FRAME, onFrame)
t.start();
t.addEventListener(TimerEvent.TIMER, onTime);

function onFrame(e:Event):void
{
stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove);
}

function onMove(e:Event):void
{
var shar:MovieClip = new Sharik();
shar.x = mouseX;
shar.y = mouseY;
shar.name = "shar"+i;

stage.addChild(shar);
i++;
}

function onTime(e:Event):void
{
if (stage.contains(shar))// мол если на сцене есть шарики
{
stage.removeChild(getChildByName(String("shar"+j)));
j++;
trace(shar.name);
}
else
{
trace("NO")
}
}

Почему-то не выполняется следующая строчка:

if (stage.contains(shar))
{
stage.removeChild(getChildByName(String("shar"+j)));
j++;
trace(shar.name);
}

Прошу объяснить грамотных людей в чем дело! В общем как написать следующее: Сцена содержит детей shar

gloomyBrain
31.12.2010, 19:30
Прошу объяснить грамотных людей в чем дело!

в функции onMove пишите не это

var shar:MovieClip = new Sharik();

а вот это

shar = new Sharik();

С наступающим! =) Хватит кодить, пора бухать праздновать

iflamberg
31.12.2010, 19:41
stage.contains(shar) узнает есть ли на сцене мувик, ссылка на который находится в переменной shar. Это ровно одна проверка.
Чтобы узнать есть ли на сцене шарики нужно перебрать все объекты на сцене, проверить, являются ли они шаром. Но это вообще в корне не правильно.
Правильно держать массив со списком шаров, и добавлять/удалять элементы из массива, когда они добавляются/удаляются со сцены.

DZHETIGAPA
31.12.2010, 20:05
Благодарю! Так и сделаю!

ВСЕХ С НОВЫМ ГОДОМ!!!:)