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

kaploson 11.08.2011 16:47

Пробовал, removeChild ... Проблема в том что я не знаю, куда именно его нужно поместить ( Так как, если я пишу в функции, где вызываю, то у меня сразу удаляются блоки, а если в другой, то выдает ошибку, потому что не может найти, что я его вызываю...

=( Вот так вот =(

2Sun 11.08.2011 16:54

Так вы же вроде и хотели удалить блоки? Ничего не понял. Какие блоки удаляются, а какие добавляются?

kaploson 11.08.2011 17:07

Прости за непонятное объяснение( Суть вот в чем:

1.при нажатии на кнопку выходит дисплейный объект-контейнер из xml файла
2.при нажатии на другую кнопку (вне контейнера) дисплейный объект-контейнер пропадает

а то у меня сейчас
накладывается друг на друга.
вот так вот как-то =) Надеюсь так грамотнее объяснил)

2Sun 11.08.2011 17:16

ну так а что мешает по нажатию на вторю кнопку запустить процесс обратный нажатию на первую?
Чым тэбе породыв - тым и вбью! (с) Тарас Бульба.

kaploson 11.08.2011 17:21

Проблема в том что, при нажатии на другую кнопку я уже очищаю сцену removeChildAt, но убирается все кроме именно блоков (контейнер) если я добавляю везде removeChild(BlockContainer), то ничего не работает((
Но и ошибок не выдает(

В чем тут может быть проблема?

2Sun 11.08.2011 17:32

Мощнейшая вспышка на Солнце заблокировала мой телепатический канал к вашему жесткому диску. Код покажите как создаете и как удаляете.

У Вас на блоках слушатели не стоят? Вы их удалять не забываете предварительно?

kaploson 11.08.2011 17:39

Код AS3:

private function dataCompleteHandler(event:Event):void 
  {
  var data:XML = new XML( (event.currentTarget as URLLoader).data );
  var parties:XMLList = data.party;
  var blocksContainer:Sprite = new Sprite();
  addChild(blocksContainer);
  blocksContainer.x = blocksContainer.y = 130;
 
  var blockHeight:Number = 0;
  for (var i:uint = 0; i < parties.length(); i++)
  {
    var block:InfoBlock = new InfoBlock(parties[i]);
    block.y = blockHeight;
    blockHeight += block.height + 1;
    block.addEventListener(MouseEvent.CLICK, infoBlockClickHandler);
    blocksContainer.addChild(block);
    _blocksArray.push(block);
  }
  }
 
private function infoBlockClickHandler(event:MouseEvent):void
  {
 
  var blockC:InfoBlock = event.currentTarget as InfoBlock;
  blockC.hiden = !blockC.hiden;
  var blockHeight:Number = 0;
  for (var i:uint = 0; i < _blocksArray.length; i++)
  {
    var block:InfoBlock = _blocksArray[i];
    if (block !== blockC)
    {
    if (!block.hiden) block.hiden = true;
    }
    block.y = blockHeight;
    blockHeight += block.height + 1;
  }
  }

Так мне написал сделать Wolsh, все работает отлично, вот только говорю не могу разобраться с удалением.
Здесь происходи вызов InfoBlock.

2Sun 11.08.2011 17:56

Так здесь то понятно , что работает. А удаляете чем? Можно код кнопки?
Запустите по нажатию кнопки такую процедуру
Код AS3:

while (blocksContainer.numChildren)
{
blocksContainer.removeChildAt(0);
_blocksArray.splice(0,1)
}
removeChild(blocksContainer);

Должно все обнулится и исчезнуть

Wolsh 11.08.2011 18:25

В моем коде ссылка на blocksContainer есть только в хендлере загрузки XML. Естественно, что Вы не сможете достучаться до него. Вынесите эту ссылку в поле класса
Код AS3:

private var blocksContainer:Sprite = new Sprite();

(cоответственно уберите строку var blocksContainer:Sprite = new Sprite(); из функции dataCompleteHandler)
И когда надо убрать контейнер с блоками со сцены, в хендлере кнопки удаления пишете просто
Код AS3:

removeChild(blocksContainer);


kaploson 11.08.2011 18:40

Спасибо огромное!!! =) Теперь все наконец-то заработало)) слепой я просто не много видать =))
Все похоже делал, немного ошибся просто))

Добавлено через 17 часов 12 минут
Вот я сделал =) так =)
Код AS1/AS2:

if (listbool==1) 
  {
    removeChild(blocksContainer);
    var temp=scene.numChildren
    for(var i=0;scene.numChildren!=0;)
    {
    scene.removeChildAt(i);
    //list.removeAll();
    }
 
  }
  else
  {
    listbool=1;   
  }

Работает плохо... Убирается сначала при переходе на другую кнопку,
а потом все блокируются...
И я вновь не знаю в чем дело =(


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

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