Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   FileReference сохранение вписываемого текста, не могу ввести свой текст (http://www.flasher.ru/forum/showthread.php?t=143904)

Mulin 28.08.2010 21:54

FileReference сохранение вписываемого текста, не могу ввести свой текст
 
Вложений: 1
Вобщем нужно открывать и сохранять 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 не отображается, а отображается надпись которую я написал по умолчанию "Введите текст", если надпись убрать, то вообще ничего не сохраняет. Обьясните мне нубу, где я не прав? Спасибо
Проектик прилагаю

Wolsh 28.08.2010 22:42

Не пойму что Вас смущает. 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');
}


Mulin 28.08.2010 22:48

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

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

Wolsh 28.08.2010 22:58

Ошибка в том что созданная переменная xml сама не будет менять свое значение при изменении свойства text текстового поля. Вы присвоили ей значение в первой строке кода, это значение у нее и останется. (говоря по-другому - строка это простой тип данных). Поэтому Вам надо обновлять значение переменной xml перед сохранением, когда в поле уже введен другой текст - Вы составляете строку заново, теперь с новым текстом, и сохраняете ее.

Mulin 28.08.2010 23:03

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

Добавлено через 1 минуту
Цитата:

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

Да я уже понял, и впринципе догадывался что проблема в этом, но для меня новичка это страшная китайская грамота. Еще раз благодарю :)

Wolsh 28.08.2010 23:20

Ну Вам в любом случае придется перекопать весь XML )))
Соответствующие методы есть (XML::appendChild например), конечно же Вы можете создать редактор, добавлять новые поля, удалять существующие. Всё это есть. Копайте все что относится к XML, лучше сразу синтаксис E4X.

sacden 18.09.2010 03:56

Простите, сейчас копался в этом коде

Код 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 во флеш приложение?

f.g.programmer 18.09.2010 11:10

Загрузка, изменение, сохранение 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);
}


sacden 18.09.2010 13:08

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

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

Код 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');
}


f.g.programmer 18.09.2010 13:26

Ошибка в том, что в твоём коде 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, время: 05:22.

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