Форум 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=145107)

sanyasanya 29.09.2010 15:32

удаление объекта
 
добрый день!
раздуплите чуток :)
обьекты движутся по экрану в одном направлении (каждому обьекту цепляется EnterFrame)
Код AS3:

function animate(e:Event):void
{
    e.target.x -= 2;
}

мне нужно чтоб при достижении обьектом координаты х=50 он удалялся. что-то вроде такого, только такое не работает :)
Код AS3:

function animate(e:Event):void
{
  e.target.x -= 2;
  for (var i:int = 0; i<100; i++)
    {
        if(home.getChildAt(i).x <50)
        {
            removeChild(i);
        }
    }
}


random13 29.09.2010 15:45

странно вы как то написали:
Код AS3:

function animate(e:Event):void
{
  e.target.x -= 2;
  for (var i:int = 0; i<100; i++)
    {
        if(home.getChildAt(i).x <50)
        {
            removeChild(i);
        }
    }
}

а как у вас получается что вы ищите в одном:
Код AS3:

home.getChildAt(i)

а удаляете из другого
Код AS3:

removeChild(i);

объекта

derhab 29.09.2010 15:46

что вы тут вообще удаляете?:)
Код AS3:

removeChild(i)


random13 29.09.2010 15:47

помойму хватит вот этого судя по логике:
Код AS3:

 
function animate(e:Event):void
{
  e.target.x -= 2;
  if(e.target.x <50)
  {
        removeChild(e.target);
  }
}

Добавлено через 1 минуту
да и кстати чтоб удалять по индексу надо использовать метод
Код AS3:

removeChildAt(i)


cleptoman 29.09.2010 16:01

когда не знаешь чего откуда удалить, то логичнее сделать так:

Код AS3:

function animate(e:Event):void
{
var item:DisplayObject = e.target as DisplayObject; // зачем дергать геттер в хендлере каждый раз?
  item.x -= 2;
  if(item.x <50)
  {
if(item.parent){
          item.parent.removeChild(item);
}
 
  }
}


koIIImarik 29.09.2010 16:32

Вложений: 1
Вот сделал пример, может быть вам будет полезно: http://www.flasher.ru/forum/attachme...1&d=1285759916

На самом деле пример делает больше, чем вы описали, надеюсь, что вы в нём не сильно запутаетесь.

sanyasanya 29.09.2010 16:42

Цитата:

Сообщение от random13 (Сообщение 939450)
помойму хватит вот этого судя по логике:
Код AS3:

function animate(e:Event):void
{
  e.target.x -= 2;
  if(e.target.x <50)
  {
        removeChild(e.target);
  }
}


1118: Implicit coercion of a value with static type Object to a possibly unrelated type flash.display:DisplayObject.

Добавлено через 2 минуты
Цитата:

Сообщение от cleptoman (Сообщение 939455)
когда не знаешь чего откуда удалить, то логичнее сделать так:
Код AS3:

function animate(e:Event):void
{
var item:DisplayObject = e.target as DIsplayObject; // зачем дергать геттер в хендлере каждый раз?
  item.x -= 2;
  if(item.x <50)
  {
if(item.parent){
          item.parent.removeChild(item);
}
 
  }
}


1120: Access of undefined property DIsplayObject. var item:DisplayObject = e.target as DIsplayObject;
1118: Implicit coercion of a value with static type Object to a possibly unrelated type flash.display:DisplayObject.

AlesNormales 29.09.2010 17:20

AS чувствителен к регистру. DisplayObject это ого-го!,
а DIsplayObject оно не понимает.

sanyasanya 29.09.2010 17:30

оо а я и не заметил.. всем спасибо!!! :)

еще, раз уж все собрались :) как в текстовое поле pole вывести количество фпс на данный момент?

cleptoman 29.09.2010 18:13

ну, соре, писал прямо тут )

по последнему вопросу: stage.frameRate


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

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