PDA

Просмотр полной версии : изменение массива (проблемка)


Fokker
10.08.2005, 14:58
Джентельмены,как всегда нужна ваша помощь (день добрый,кстати).
Решаю следующую задачку.
Имеем 3 кадра : в первом предлагается ввести имя (пока без пароля),если это имя существует в массиве то переходим на кадр3,если нет,то предлагается зарегестрироваться (для этого нажимаем на кнопку и переходим на кадр 2).В кадре 2 вводим новое имя и добавляем его в массив,после чего повторно возвращаемся на страницу1 и пытаемся залогиниться,но фигня в том,что при возвращении на страницу 1 массив остаеться не изменеенным...почему-то,в чем ошибка не пойму...код такой :
stop();
var login:String = "";
var pass:String = "";
var test:String = "";
var pass2:String = "";
var pass1:String = "";
var log2:String = "";
var test2:String = "";
var Subscriber:Array = new Array("вася","петя","leon","fokker");
var Password:Array = new Array();
_root.onEnterFrame = function() {
reg2_btn.onPress = function() {
if (log2 !== "") {
Subscriber.unshift(log2);
gotoAndStop(1);
trace (Subscriber);
}
};
function PROVERKA() {
var i:Number = 0;
while (i<Subscriber.length) {
if (login == Subscriber[i]) {
gotoAndStop(3);
}
i++;
}
if (login !== Subscriber[i]) {
test = "зарегистрируйтесь";
login = "";
}
}
vhod1_btn.onPress = function() {
PROVERKA();
};
reg1_btn.onPress = function() {
gotoAndStop(2);
};
};

чтоб понятно было приаатачиваю fla-шку....
...
ну и как всегда,коментарии по коду будут не лишними.

iNils
10.08.2005, 15:06
1. Когда ты переходишь на первый кадр после добавления нового имени, то заново инициализируешь массив имен.
2. _root.onEnterFrame = function() { тебе абсолютно не нужен, убери его

Fokker
10.08.2005, 16:00
да вроде как действительно, онЭнтерФрейм не в красную армию здесь...но если ее убрать,то почему-то перестает работать кнопка :
reg2_btn.onPress = function() {
if (log2 !== "") {
Subscriber.unshift(log2);
gotoAndStop(1);
trace (Subscriber);
}
Ну а как же мне сделать,чтобы массив не инициализировался заного при переходе на кадр1?
пробовал "мудрить" с функцией return,но ничего с ней не получилось....

iNils
10.08.2005, 16:38
Ну так. Ты в первом кадре пытаешься приципить к кнопке reg2_btn реакцию на событие onPress. Но кнопки то в первом кадре у тебя нет, она у тебя во втором. Вот и вставляй этот код во второй кадр.
Далее, просто сместит все на один кадр правее за исключением строк инициализации переменных + в gotoAnd.... значения соответственно поменяй

Fokker
11.08.2005, 12:13
я так и делал изначально,код разместил в двух кадрах,но потом задумал сделать его централизованным и малость споткнулся на этом....
нилс,я не совсем понял,ты предлагаешь добавить еще один кадр (копию первого) и сделать его третьим (а третий соответственно в четвертый перекинуть)?

Fokker
11.08.2005, 13:48
ну вот...разбрасал код по трем кадрам (1 и 3 дублируются)из четырех...работает все нормально...но как-то это не правильно наверное...а можно его как-то централизованно переписать? шоб красиво было :) ?

iNils
11.08.2005, 14:02
Использование флага

if (!flag) {
flag = true
....тут пошли переменные
}

при следущем заходе на кадр, они уже не будет переписаны.

Fokker
11.08.2005, 14:22
спасибо,..флаги "мы" ыщо не проходили :)...будет чего почитать...