PDA

Просмотр полной версии : Отмечаю 'ВИ' в списке и это сохраняется. как?


glazik
17.10.2006, 18:16
Ребят подскажите как мне сделать следующее:
У меня есть список около каждого пункта есть возможность выбрать галочку. Мне надо сделать так, чтобы когда юзер выбирал несколько ви, после того как он закодил на флешку заново те ви которве он выбрал были сохранены.
Надеюсь понятно объяснил, подскажите плиз куда хотябы копать?
Спасибо.

Хемуль
17.10.2006, 18:20
Не знаю, что такое "Ви", но, похоже, вам нужно почитать про SharedObject. Кстати, сейчас на форуме идёт обсуждение сохранения в SharedObject текста из полей ввода для загрузки их при следующем запуске флешки.

glazik
22.10.2006, 19:35
Дико извеняюсь, но я так и не понял как же мне это сделать. Все примеры которые я нашёл были о том как сохранить текст в текстовый или не совсем текстовый файл. Но я говорю о том, что мне надо сохранить значения компонента 'CheckBox' .
Тоесть во фрейме у меня есть 5 чекбоксов, я ометил 3 из них, закрыл флешку (swf), открыл и у меня те 3 галочки которые я отметил сохранились.

Если можно приведите пример того, что мне надо написать в Actions этого злощасного фрейма с чекбоксами.

Хемуль
22.10.2006, 21:27
Привожу код, который создаёт 5 checkBox'ов и устанавливает для них тот статус, который был в прошлый раз. Пример простой, но если будут вопросы, спрашивайте:

var checkBoxesNumber:Number = 5;
var checkBoxesBaseName:String = "myCheckBox";
var left:Number = 100;
var top:Number = 100;
var checkBoxesInterval:Number = 20;
var mySharedObject:SharedObject = SharedObject.getLocal("checkBoxes");

for (var index:Number = 0; index < checkBoxesNumber; index++)
{
var newCheckBoxName:String = checkBoxesBaseName + index;
var newCheckBox:Object = this.createClassObject(mx.controls.CheckBox, newCheckBoxName, this.getNextHighestDepth(), {label:newCheckBoxName, selected:false});
newCheckBox.move(left, top + index * checkBoxesInterval);
newCheckBox.selected = mySharedObject.data[newCheckBoxName] == undefined ? false : mySharedObject.data[newCheckBoxName];
var listenerObject:Object = new Object();
listenerObject.click = function(eventObject:Object)
{
mySharedObject.data[eventObject.target._name] = eventObject.target.selected;
mySharedObject.flush();
};
newCheckBox.addEventListener("click", listenerObject);
}

Исходник прикрепляю...
Там trace один остался в коде. Его можно удалить. Я его оставил для вас, чтобы вы посмотрели наглядно...
Учтите, что SharedObject - это что-то вроде "печенья". То есть, если вы запустите эту же флешку на другом компьютере или переместите её в другую папку, а затем запустите, то данные о "флажках" не загрузятся.

glazik
24.10.2006, 13:23
Большое спасибо!
фсё работает и всё хорошо.
А теперь вопрос, как это действие привязать непосредственно к чекбоксу, а не к фрейму?

Хемуль
24.10.2006, 15:02
2 glazik:
А смысл?
Тем более, что привязано оно к "флажкам". Код просто в кадре. Вас это чем-то смущает?

glazik
24.10.2006, 17:54
Смысл в том, что я не могу свободно передвигать чекбоксы. если опираться на код который вы мне любезно предоставили, то я могу распределять эти чекбоксы только один за одним, по порядку. Как мне показалось решением проблеммы будет привязка кода не ко фрейму, а непосредственно к чекбоксу. Кроме того даже если и раставлять чекбоксы по координатам, это очень неудобно так как визуально ты их не видешь при редактировании.

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

var checkBoxesBaseName:String = "myCheckBox";

да и судя по всему не только здесь....

Хемуль
24.10.2006, 19:28
2 glazik:
Вам всё равно придётся давать вашим "флажкам" имена, чтобы обращаться к ним.

glazik
24.10.2006, 19:36
В этом сосбтвенно вопрсо и заключается. :)

Как дать флашкам имя и чтобы один от другого не как не зависил?

glazik
01.11.2006, 18:41
Ребят, так и не нашёл решение проблеммы. :(

Как запомнить значение чекбокса с условием что я могу визуально видеть чекбокся при релактировании?

Спасибо.

Хемуль
02.11.2006, 13:08
2 glazik:
Раздать им имена, которые отличаются друг от друга по какому-то закону и проходить их в цикле. Либо, если имена вообще не похожи, создать массив и заполнить его строками, отвечающими именами компонентов, а потом работаь с массивом в цикле, получая имя компонента и работая с ним...