PDA

Просмотр полной версии : Исчезают объекты при компиляции


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

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

Dukobpa3
01.11.2013, 16:36
В коде, который вы не хотите показывать.

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


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
removeChildAt(4)
Так вы ж ее удаляете. Непонятно только зачем.

Маруська
01.11.2013, 17:16
да, проблема.

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


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
removeChildAt(numChildren-1);
спасибо, то, что нужно жэ =))
а 0 не люблю, потому как программить на Pascal училась

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

caseyryan
01.11.2013, 22:50
а 0 не люблю, потому как программить на Pascal училась
Ужас. Кому сейчас нужен паскаль?
Вот такой код
var bt:Array = new Array(0,bt1,bt2, bt3, bt4, bt5, bt6, bt7);
не прокатит ни в одном языке со строгой типизацией. Не нужно так делать. Все проблемы из-за этого и возникают. Нужно привыкнуть, что в нормальных языках массивы начинаются с нуля, а не с единицы. Это вполне удобно.