Просмотр полной версии : Как проверить существование символа на ролике?
sidorenkova
07.06.2013, 13:56
Здравствуйте!
AS3 создаёт на ролике элемент методом: addChild();
Но потом нужно удалить элемент removeChild, но у меня есть вопрос, если ли метод, как проверить. существует ли на данный момент Символ в ролике?
Чтобы вначале проверить. если ли он, а потом его удалить, если он существует.
Добавлено через 7 минут
Можно ли обычным... *.visible == "true" ???
Bletraut
07.06.2013, 14:11
Это же очень просто
var mm:Sprite = new Sprite();
if(mm)
{
trace("Существует");
}
else
{
trace("Не существует");
}
Bletraut - WOT ?
contains
Final Hope
07.06.2013, 14:18
var mc:MovieClip = new MovieClip();
mc.name = "my_mc";
this.addChild( mc );
//Первый способ проверить:
trace( this.getChildByName( "my_mc" ) );
//Второй способ проверить:
trace( mc.parent == this );
//Третий способ проверить от in4core:
trace( this.contains( mc ) );
Bletraut
07.06.2013, 14:32
Bletraut - WOT ?
contains
Тоже самое что и mm != null
Добавлено через 2 минуты
//Первый способ проверить:
trace( this.getChildByName("my_mc") );
//Второй способ проверить:
trace( mc.parent == this );
//Третий способ проверить от in4core:
trace( this.contains( mc ) );
Извращения же просто, особенно первое и второе.
Final Hope
07.06.2013, 14:37
Bletraut, вопрос был "как узнать, находится ли объект внутри другого объекта", а не узнать, существует ли объект в принципе.
Bletraut
07.06.2013, 14:41
var mm:Sprite = new Sprite();
var bb:Sprite = new Sprite();
bb.addChild(mm);
if(bb.mm)
{
trace("Существует");
}
else
{
trace("Не существует");
}
Тоже самое.
Final Hope
07.06.2013, 14:44
Тоже самое.
Scene 1, Layer 'Layer 1', Frame 1, Line 4 1119: Access of possibly undefined property mm through a reference with static type flash.display:Sprite.
Да ну?
Bletraut
07.06.2013, 14:50
Цитата: Сообщение от Bletraut
Тоже самое.
Цитата: Scene 1, Layer 'Layer 1', Frame 1, Line 4 1119: Access of possibly undefined property mm through a reference with static type flash.display:Sprite.
Да ну?
Пардон, не нужно было if(bb.mm)
{ писать, а просто if(mm)
{, это на тот случай было если mm уже в bb стоит в кадре.
Добавлено через 57 секунд
var mm:Sprite = new Sprite();
var bb:Sprite = new Sprite();
bb.addChild(mm);
if(mm)
{
trace("Существует");
}
else
{
trace("Не существует");
}
вот так все заработает.
KumoKairo
07.06.2013, 15:03
Совсем недавно посоветовали не использовать contains, а проверять родителя мувика через .parent
То есть если имеем:
var spriteContainer:Sprite = new Sprite();
var vasya:Sprite = new Sprite();
spriteContainer.addChild(vasya);
if(vasya.parent == spriteContainer) //Истина
{
trace("Содержит");
}
spriteContainer.removeChild(vasya);
if(vasya.parent == spriteContainer) //Уже ложь
{
trace("Содержит"); //не выведет
}
Спасибо товарищам КорДум и GBee за наводку :)
Final Hope
07.06.2013, 15:13
var mm:Sprite = new Sprite();
var bb:Sprite = new Sprite();
bb.addChild(mm);
if(mm)
{
trace("Существует");
}
else
{
trace("Не существует");
}
вот так все заработает.Bletraut, а вот так работает? :)var mm:Sprite = new Sprite();
var bb:Sprite = new Sprite();
bb.addChild(mm);
bb.removeChild(mm);
if(mm)
{
trace("Существует");
}
else
{
trace("Не существует");
}
MikroAcse
07.06.2013, 18:39
Bletraut
Ты не прав.
Вопрос был: добавлен ли спрайт в другой спрайт?
Ты этот вопрос понял как: существует ли этот спрайт?
И еще раз:
var sprite:Sprite = new Sprite();
if(sprite == null) {
trace("Sprite is null");
}
Никогда, никогда не выведет "Sprite is null".
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.