Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.12.2009, 10:53
Milaho вне форума Посмотреть профиль Отправить личное сообщение для Milaho Найти все сообщения от Milaho
  № 1  
Ответить с цитированием
Milaho

Регистрация: Dec 2009
Сообщений: 5
По умолчанию Сохранение значений

Добрый день!

Описание задачи: создаю сцену из пяти кадров по типу визарда. На каждом шаге вводятся данные в текстовые поля Input Text и на последнем кадре происходит обработка данных. Есть кнопки "Вперед" и "Назад" двигаясь по которым, необходимо, что бы в заполненных ранее полях сохранялись данные.

Что я делаю: На первом кадре создаю массив необходимой длинны, и запускаю функцию, которая обнуляет этот массив. После ввода в поле данных, соответствующему элементу массива присваивается значение. Таким образом, доходя до последнего кадра имеется набор готовый для обработки. Причем, двигаясь вперед и назад значения из массива подгружаются туда, куда необходимо, но есть одно НО....

Проблема: При переходе на первый кадр, массив снова обнуляется и соответственно все данные в нем уничтожаются

Какие были приняты меры:
1. При объявлении массива сразу же указывал значения всех элементов. Не помогло.
2. Обнулял массив один раз при onLoad(). Когда второй раз попадаю на первый кадр, то массив просто становится пустой.

Есть ли у кого-нибудь какие-нибудь предложения и идеи??? Сам уже моск сломал...

Старый 03.12.2009, 11:10
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 2  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Не переходите на первый кадр. Сделайте 6 каров, в первом объявите массив, и никогда на него не возвращайтесь.

Старый 03.12.2009, 11:17
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 3  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Так пусть на вашем первом кадре функция, которая обнуляет массив, проверяет состояние специального триггера. Например, он устанавливается в true на втором кадре. Когда происходит возврат к первому кадру, то функция массив не обнуляет, но если первый кадр проигрывается первый раз, то значение триггера не определено, и функция должна обнулить массив.
В первом кадре:
Код AS1/AS2:
function clearArray () {
	if (!wasStarted) {
		//действия по обнулению массива
	}
}
clearArray ();
Во втором кадре:
Код AS1/AS2:
wasStarted = true ;


Последний раз редактировалось mooncar; 03.12.2009 в 11:19.
Старый 03.12.2009, 11:19
Milaho вне форума Посмотреть профиль Отправить личное сообщение для Milaho Найти все сообщения от Milaho
  № 4  
Ответить с цитированием
Milaho

Регистрация: Dec 2009
Сообщений: 5
alexcon314, да, я думал об этом, но это я оставлю на самую безвыходную ситуацию...

Старый 03.12.2009, 11:37
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 5  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
mooncar, в первом кадре происходит не просто обнуление массива, а его объявление. Тогда уж как-то так для первого кадра
Код AS1/AS2:
if(! a)
a = new Array();

Старый 03.12.2009, 11:48
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Цитата:
Сообщение от alexcon314 Посмотреть сообщение
mooncar, в первом кадре происходит не просто обнуление массива, а его объявление.
Разумеется. Просто все действия для массива я оставил за символами комментариев // на усмотрение автора.

Старый 03.12.2009, 11:48
Milaho вне форума Посмотреть профиль Отправить личное сообщение для Milaho Найти все сообщения от Milaho
  № 7  
Ответить с цитированием
Milaho

Регистрация: Dec 2009
Сообщений: 5
mooncar, это тоже не подходит, так как если функция не обнуляет массив, то массив вообще остается пустой, так как на первом кадре он объявляется.
Я думаю, что можно реализовать переприсваивание какого-нибудь временного массива, при переходе со второго кадра, но будет ли виден этот массив из второго в первом кадре?

Старый 03.12.2009, 11:52
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 8  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Цитата:
Сообщение от Milaho Посмотреть сообщение
Я думаю, что можно реализовать переприсваивание какого-нибудь временного массива
Не плодите лишних сущностей.
Сделайте как сказал alexcon314 -
Код AS1/AS2:
if(! a)
a = new Array();
"если массив не задан, то его создаем".

Старый 03.12.2009, 11:56
Milaho вне форума Посмотреть профиль Отправить личное сообщение для Milaho Найти все сообщения от Milaho
  № 9  
Ответить с цитированием
Milaho

Регистрация: Dec 2009
Сообщений: 5
Друзья! Спасибо!
Совместными усилиями и мозговой атакой, решили эту проблему!!!!
Код AS1/AS2:
//Массив, хранящий в себе значения введеных данных, названия соответствуют массиву из ArInputBox
if (!arVarieble){
var arVarieble:Array = new Array(14);
}
//Заполнение массива arVariables нулями
function arVarNull(){
	for (var i:Number = 0; i < arVarieble.length; i++) { 
		if(arVarieble[i]){
			arVarieble[i]=arVarieble[i];
		}else{
 		arVarieble[i] = 0; }
	}
}
function clearArray () {
	if (!wasStarted) {
		arVarNull();//действия по обнулению массива
	}
}
clearArray ();
 
// wasStarted присваевается true не на втором кадре, а при клике кнопки "Следующий"

Старый 03.12.2009, 12:07
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 10  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Немного смущает
Код AS1/AS2:
if(arVarieble[i]){
	arVarieble[i]=arVarieble[i];
}else{
 	arVarieble[i] = 0; 
}
Почему бы вам не оставить только действия по обнулению:
Код AS1/AS2:
if(!arVarieble[i]){
    arVarieble[i] = 0; 
}

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:12.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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