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

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

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

Регистрация: Aug 2010
Сообщений: 107
Question FileReference сохранение вписываемого текста, не могу ввести свой текст

Вобщем нужно открывать и сохранять XML файл на локалке. Я нуб, потому пока пытаюсь сохранить вводимые мной данные. Вот код
Код AS1/AS2:
var xml:String= XML("<message><name>" + Input_text.text + "</name></message>")
 
Save.addEventListener(MouseEvent.CLICK,stageClickHandler);
var fr:FileReference = new FileReference();
function stageClickHandler(e:MouseEvent) {
fr.save(xml,'test.xml');
}
В даном случае вводимые в поле Input_text не отображается, а отображается надпись которую я написал по умолчанию "Введите текст", если надпись убрать, то вообще ничего не сохраняет. Обьясните мне нубу, где я не прав? Спасибо
Проектик прилагаю
Вложения
Тип файла: rar СохранениеXML.rar (27.7 Кб, 51 просмотров)

Старый 28.08.2010, 22:42
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 2  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Не пойму что Вас смущает. Input_text.text равно "Введите текст"? Так в чем проблема? Какой xml сделали, тот и сохраняет.
Цитата:
Я нуб, потому пока пытаюсь сохранить вводимые мной данные.
Не заметил в коде ни слова о вводимых данных. В начале кода Вы создали xml и потом при нажатии на какой-то Save (видимо кнопка, почему-то с большой буквы) Вы эту xml и сохраняете. А уж что Вы там набрали в поле ПОСЛЕ того как присвоили xml значение - как бы без разницы. Текст в поле обновился, но xml то осталась той же, ЕЁ Вы никак не обновляли.

Добавлено через 6 минут
Я так понял, замышлялось что-то типа
Код AS3:
var xml:String;
 
Save.addEventListener(MouseEvent.CLICK,stageClickHandler);
var fr:FileReference = new FileReference();
 
function stageClickHandler(e:MouseEvent) 
{
    xml = "<message><name>" + Input_text.text + "</name></message>";
    fr.save(xml, 'test.xml');
}
__________________
Reality.getBounds(this);

Старый 28.08.2010, 22:48
Mulin вне форума Посмотреть профиль Отправить личное сообщение для Mulin Найти все сообщения от Mulin
  № 3  
Ответить с цитированием
Mulin
 
Аватар для Mulin

Регистрация: Aug 2010
Сообщений: 107
Ну да, данные я пока не ввожу, я их только создаю (пока с этим разобраться бы), вот и вопрос состоит в том что я сделал не так и что исправить что бы данные которые ввожу в текстовом поле, сохранялись в XML. Если вы вкурсе то было бы здорово если бы вы мне обьяснили, а не спрашивали в чем проблема. Знал бы в чем, не задовал бы вопрос. Я уже двое суток копаю инет, понимаю, тому кто с AS на ты это как два пальца, но я на его смотрю в третий раз только.

Добавлено через 3 минуты
Дружище, спасибо, чесно слово выручил. буду разбираться в коде

Старый 28.08.2010, 22:58
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Ошибка в том что созданная переменная xml сама не будет менять свое значение при изменении свойства text текстового поля. Вы присвоили ей значение в первой строке кода, это значение у нее и останется. (говоря по-другому - строка это простой тип данных). Поэтому Вам надо обновлять значение переменной xml перед сохранением, когда в поле уже введен другой текст - Вы составляете строку заново, теперь с новым текстом, и сохраняете ее.
__________________
Reality.getBounds(this);

Старый 28.08.2010, 23:03
Mulin вне форума Посмотреть профиль Отправить личное сообщение для Mulin Найти все сообщения от Mulin
  № 5  
Ответить с цитированием
Mulin
 
Аватар для Mulin

Регистрация: Aug 2010
Сообщений: 107
Еще вопрос. Суть в том, что мне нужно открывать XML файл редактировать определенные его поля и сохранять. Вобщем то хотнелось бы избежать функции , в идеале было бы через Load XML (или как там) и соответствующие поля файла открывались в соответствующих текстовых полях флешки для редактирования. ну и после радактирования - сохранить с изменениями. Причем не просто поменять текст, а добавить новый элемент. Например было есть Name и добавить (удалить) третий. Возможно ли это? Если да то скажите в каком направлении копать?

Добавлено через 1 минуту
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Ошибка в том что созданная переменная xml сама не будет менять свое значение при изменении свойства text текстового поля. Вы присвоили ей значение в первой строке кода, это значение у нее и останется. (говоря по-другому - строка это простой тип данных). Поэтому Вам надо обновлять значение переменной xml перед сохранением, когда в поле уже введен другой текст - Вы составляете строку заново, теперь с новым текстом, и сохраняете ее.
Да я уже понял, и впринципе догадывался что проблема в этом, но для меня новичка это страшная китайская грамота. Еще раз благодарю

Старый 28.08.2010, 23:20
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 6  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Ну Вам в любом случае придется перекопать весь XML )))
Соответствующие методы есть (XML::appendChild например), конечно же Вы можете создать редактор, добавлять новые поля, удалять существующие. Всё это есть. Копайте все что относится к XML, лучше сразу синтаксис E4X.
__________________
Reality.getBounds(this);

Старый 18.09.2010, 03:56
sacden вне форума Посмотреть профиль Отправить личное сообщение для sacden Найти все сообщения от sacden
  № 7  
Ответить с цитированием
sacden
[+1.3 10.09.10]

Регистрация: Oct 2007
Сообщений: 27
Простите, сейчас копался в этом коде

Код AS3:
var xml:String;
 
Save.addEventListener(MouseEvent.CLICK,stageClickHandler);
var fr:FileReference = new FileReference();
 
function stageClickHandler(e:MouseEvent) 
{
    xml = "<message><name>" + Input_text.text + "</name></message>";
    fr.save(xml, 'test.xml');
}
1.вопрос
как добавить сохранение второго текстового поля?
Код AS3:
<message2><name2>" + Input_text2.text + "</name2></message2>
2. что нужно прописать в коде...чтобы при включении флешки на локальном компе...сохраненные данные загружались из xml во флеш приложение?

Старый 18.09.2010, 11:10
f.g.programmer вне форума Посмотреть профиль Отправить личное сообщение для f.g.programmer Найти все сообщения от f.g.programmer
  № 8  
Ответить с цитированием
f.g.programmer
 
Аватар для f.g.programmer

блогер
Регистрация: Sep 2010
Адрес: Россия
Сообщений: 137
Записей в блоге: 3
Загрузка, изменение, сохранение XML (сохранять в директорию флешки)
Код AS3:
private var _url:String = "test.xml";
private var _xml:XML;
private function testXMLLoader():void {
	var url_loader:URLLoader = new URLLoader();
	url_loader.addEventListener(Event.COMPLETE, completeLoadHandler);
	url_loader.addEventListener(IOErrorEvent.IO_ERROR, errorLoadHandler);
	url_loader.dataFormat = URLLoaderDataFormat.TEXT;
	url_loader.load(new URLRequest(_url));
}
private function errorLoadHandler(e:IOErrorEvent):void {
        var url_loader:URLLoader = e.target as URLLoader;
	url_loader.removeEventListener(Event.COMPLETE, completeLoadHandler);
	url_loader.removeEventListener(IOErrorEvent.IO_ERROR, errorLoadHandler);
	//
	_xml = <messages/>;
	testSaveMessage();
}
private function completeLoadHandler(e:Event):void {
	var url_loader:URLLoader = e.target as URLLoader;
	url_loader.removeEventListener(Event.COMPLETE, completeLoadHandler);
	url_loader.removeEventListener(IOErrorEvent.IO_ERROR, errorLoadHandler);
	//
	_xml = new XML(url_loader.data);
	testSaveMessage();
}
private function testSaveMessage():void {
	var message:XML = <message />;
	message.name = "Google";
	message.text = "Dont be evil"; // ошибка форума, штрих внутри строки не воспринимается как часть строки
	_xml.appendChild(message);
	//
	var fr:FileReference = new FileReference();
	fr.save(_xml, _url);
}


Последний раз редактировалось f.g.programmer; 18.09.2010 в 11:18.
Старый 18.09.2010, 13:08
sacden вне форума Посмотреть профиль Отправить личное сообщение для sacden Найти все сообщения от sacden
  № 9  
Ответить с цитированием
sacden
[+1.3 10.09.10]

Регистрация: Oct 2007
Сообщений: 27
Добрый день, я очень благодарен Вам за помощь! ...но я еще новичок и не могу разобраться в этом коде, не вижу что за что отвечает...где переменные и каким образом (нажатием на кнопку?) это сохраняется....(

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

Код AS3:
var xml:String;
 
 
Save.addEventListener(MouseEvent.CLICK,stageClickHandler);
var fr:FileReference = new FileReference();
 
function stageClickHandler(e:MouseEvent) 
{
    xml = "<message><name>" + Input_text.text + "</name></message>",
"<message2><name2>" + Input_text2.text + "</name2></message2>;
    fr.save(xml, 'test.xml');
}

Старый 18.09.2010, 13:26
f.g.programmer вне форума Посмотреть профиль Отправить личное сообщение для f.g.programmer Найти все сообщения от f.g.programmer
  № 10  
Ответить с цитированием
f.g.programmer
 
Аватар для f.g.programmer

блогер
Регистрация: Sep 2010
Адрес: Россия
Сообщений: 137
Записей в блоге: 3
Ошибка в том, что в твоём коде xml не имеет корневого тега

Код AS3:
var xml:XML = <messages/>;
 
stage.addEventListener(MouseEvent.CLICK, stageClickHandler);
var fr:FileReference = new FileReference();
 
function stageClickHandler(e:MouseEvent):void 
{
	var message:XML;
 
	message = <message/>;
	message.name = Input_text.text;
	xml.appendChild(message);
 
	message = <message/>;
	message.name = Input_text2.text;
	xml.appendChild(message);
 
       fr.save(xml, 'test.xml');
}

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

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

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


 


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


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