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

Маруська 01.11.2013 16:36

Исчезают объекты при компиляции
 
Есть 7 кнопок на сцене. После компиляции 3-я пропадает. Уже весь скрипт перебрала - кнопки только листенерами выступают, больше с ними я ничего и не делаю.

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

Dukobpa3 01.11.2013 16:36

В коде, который вы не хотите показывать.

Маруська 01.11.2013 16:40

Вот код, основная функциональная его часть.
Да, проблема где-то в коде. С таким упрощённым кодом не отображается 4-я кнопка

Код AS3:

stop();
var arr:Array= new Array;
var p:Number;
 
var bt:Array = new Array(0,bt1,bt2, bt3, bt4, bt5, bt6, bt7);
 
for (p=1; p<=7; p++){
                arr[p]=0;
                if (p==page){
                newpage(p);
                }
        }
 
for(var i:int = 1; i<bt.length;i++)
{ bt[i].addEventListener(MouseEvent.CLICK, itemOnRelese);
  }
 
function itemOnRelese(e:MouseEvent):void
{ 
  var currentNumber:int;
  for(var i:int = 1; i<bt.length; i++)
  {
          if(e.currentTarget.name == ['bt'+i])
          {newpage(i)};
  };
}
 
 
function newpage(i):void
 {               
        for (var b=1; b<=7; b++)
                {
                        if (arr[b]==1){
                                arr[b]=0;
                                bt[b].gotoAndStop(1)
                                }
                        }
                        removeChildAt(4)
        var Definition:Class  = getDefinitionByName("page_" + String(i)) as Class; // получаем ссылку на класс
    var pg:DisplayObject = new Definition();
        addChildAt(pg,4);
        pg.y=264.5;
        pg.x=-150;
        bt[i].gotoAndStop(2);
        arr[i]=1;
 }


Dukobpa3 01.11.2013 16:53

Код AS3:

removeChildAt(4)

Так вы ж ее удаляете. Непонятно только зачем.

Маруська 01.11.2013 17:16

да, проблема.

как же мне тогда быть с addChild(pg);

Код AS3:

function newpage(i):void
 {               
        for (var b=1; b<=7; b++)
                {
                        if (arr[b]==1){
                                arr[b]=0;
                                bt[b].gotoAndStop(1)
                                }
                        }
                        removeChild(pg)//здесь необходимо удальть любой экземпляр зп. Такая запись неправильная. Как сделать верно?
        var Definition:Class  = getDefinitionByName("page_" + String(i)) as Class; // получаем ссылку на класс
    var pg:DisplayObject = new Definition();
        addChild(pg); //здесь добавляем pg на сцену
        pg.y=264.5;
        pg.x=-150;
        bt[i].gotoAndStop(2);
        arr[i]=1;
 }


samana 01.11.2013 17:28

А если эти экземпляры pg заносить в массив при создании, а там где вы хотите удалить все pg, то в цикле по этому массиву и удаляйте.

ZackMercury 01.11.2013 17:53

И сразу скажу еще одну проблему - не работает последняя кнопка. Кнопка то есть, а вот клик ничего не дает.

Ох уж эти ваши фокусы с единицей...
Я не понимаю, что мешает вам привыкнуть вести отсчет от нуля?

Добавлено через 13 минут
Вы первым образом создаете кнопки, очевидно, что символ на 4-ом слое(отсчет от нуля) будет кнопка.
Если вы хотели удалить последний элемент, то обратитесь к removeChildAt(numChildren-1);

Маруська 01.11.2013 21:41

Цитата:

Сообщение от SuriTheAngel (Сообщение 1150876)
removeChildAt(numChildren-1);

спасибо, то, что нужно жэ =))
а 0 не люблю, потому как программить на Pascal училась

ZackMercury 01.11.2013 21:54

Цитата:

а 0 не люблю, потому как программить на Pascal училась
Есть вещи, от которых однажды приходит время избавляться.

caseyryan 01.11.2013 22:50

Цитата:

а 0 не люблю, потому как программить на Pascal училась
Ужас. Кому сейчас нужен паскаль?
Вот такой код
Цитата:

Код AS3:

var bt:Array = new Array(0,bt1,bt2, bt3, bt4, bt5, bt6, bt7);


не прокатит ни в одном языке со строгой типизацией. Не нужно так делать. Все проблемы из-за этого и возникают. Нужно привыкнуть, что в нормальных языках массивы начинаются с нуля, а не с единицы. Это вполне удобно.


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

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