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

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

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

Регистрация: Aug 2010
Сообщений: 107
По умолчанию Загрузка, редактирование и сохранение XML

Вобщем сам код почти готов, но никак немогу присвоить текстовому полю содержание одного из узлов массива, и вообще теряюсь с проблемой замены этого самого узла.
Вот весь код
Код AS3:
var xml:XML=new XML();
var xmlList:XMLList=new XMLList();
var menuItem:MenuItem;
loadXml();
send_btn.addEventListener(MouseEvent.MOUSE_UP, sendData);
addEventListener(Event.ENTER_FRAME, loop);
function loop(e:Event):void
{
	if(nameInput_txt.text!=''&&textInput_txt.text!='')
	{
		send_btn.enabled=true;
	}else
	{
		if(send_btn.enabled)
			send_btn.enabled=false;
	}
}
function loadXml(e:MouseEvent=null):void
{
	var xmlRequest:URLRequest=new URLRequest('messages.xml');
	var loader:URLLoader=new URLLoader();
	loader.addEventListener(Event.COMPLETE, xmlLoaded);
	loader.load(xmlRequest);
}
function xmlLoaded(e:Event):void
{
	xml=XML(e.target.data);
	xmlList=xml.children();	
	updateText();
}
function updateText():void
{
	var i:uint=0;	
	for(i;i<xmlList.length();i++)
	{		
 menuItem = new MenuItem();
 menuItem.menuLabel.htmlText+=xmlList[i].name;
 menuItem.menuLabel2.htmlText+=xmlList[i].text;
 menuItem.x = 20;
 menuItem.y = 25 + i*170;
 //Сделаем, чтобы кнопка выглядела как кнопка (курсор в виде ручки)
 menuItem.buttonMode = true;
 menuItem.mouseChildren = false;
 //Добавим обработчики событий (используются для анимации кнопок)
 menuItem.addEventListener(MouseEvent.MOUSE_UP, Select);
 addChild (menuItem);
}
}
 
function Select(e:MouseEvent):void
{
	 trace(xmlList.text[this.i]);
 
}
 
function sendData(e:MouseEvent):void
{		
	var newName:String=nameInput_txt.text;
	var newText:String=textInput_txt.text;	
	nameInput_txt.text='';
	textInput_txt.text='';
	var newXml:XML=XML('<DATA><name>'+newName+'</name><text>'+newText+'</text></DATA>');
	trace(newXml);	
	var phpRequest:URLRequest=new URLRequest('messages.php');
	phpRequest.data=newXml;
	phpRequest.contentType='text/xml';
	phpRequest.method=URLRequestMethod.POST;
	var phpLoader:URLLoader=new URLLoader();
	phpLoader.addEventListener(Event.COMPLETE, xmlSended);
	phpLoader.load(phpRequest);
}
function xmlSended(e:Event):void
{
	loadXml();
}
Слушатель мыши запускает функцию Select, в функции прописан код
Код AS3:
trace(xmlList.text[this.i]);
, очевидно где-то закосяченый ибо не работает. Временно стоит trace, которому пытаюсь присвоить значение text одного из узлов массива xmlList, который в свою очередь (при удачном решении проблемы) буду присваивать текстовому полю menuLabel2. Ну и соответственно значение name, полю - menuLabel. Но код не пашет. Кривые руки. Еще, после редактирования содержимого, мне нужно будет перписать содержимое этого же узла. Но для меня это уж совсем высший пилотаж . Был бы очень признателен за помощь. Думаю сие многим бы пригодилось. По окончании собираюсь выложить исходники. Вот кстати и он сам (незаконченный).
Вложения
Тип файла: rar ДЛЯРЕДАКТОРАXML.RAR (186.3 Кб, 77 просмотров)

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

Регистрация: Aug 2010
Сообщений: 107
неужели никто не знает?

Старый 20.10.2010, 19:17
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 3  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
но никак немогу присвоить текстовому полю содержание одного из узлов массива
Ткните носом где это происходит и что вы делаете.
Просто пока что глухо влесу.
tf.text = arr[5] as String если по вопросу вверхушке )))

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

Регистрация: Aug 2010
Сообщений: 107
Текстовое поле находится в мувиклипе вот полный адрес menuItem.menuLabel. В него загружаются данные из XML. Так вот эти клипы дублируют количество узлов в XML, то есть если узлов 10 то и мувиклипов с текстовыми полями будет так же 10, и во все текстовые поля загрузятся данные из соответствующих узлов XML. Вобщем то это прекрасно работает. Другое дело, что я хочу по клику по любому из экземпляров мувиклипа menuItem.menuLabel, загрузить в другое текстовое поле nameInput данные из menuItem.menuLabel (там два похожих клипа menuItem.menuLabel и menuItem.menuLabel2 и для них соответсвующие поля для дублирования nameInput и textInput) и затем все это дело отредактировать и сохранить в тот же самый узел XML с которого и был взят оригинал. Застопорился уже на этапе присвоения значения текстового поля экземпляра menuItem.menuLabel полю nameInput. Уже полинета скачал. непомогает. Чую я где то идиот...

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
name и text - в XML это методы, а не свойства, их вызывать надо -

name () метод
AS3 function name():Object
Выдает полное имя объекта XML.

text () метод
AS3 function text():XMLList
Возвращает объект XMLList всех свойств XML объекта XML, представляющих текстовые узлы XML.
__________________
Reality.getBounds(this);

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

Регистрация: Aug 2010
Сообщений: 107
Цитата:
Сообщение от Wolsh Посмотреть сообщение
name и text - в XML это методы, а не свойства, их вызывать надо -

name () метод
AS3 function name():Object
Выдает полное имя объекта XML.

text () метод
AS3 function text():XMLList
Возвращает объект XMLList всех свойств XML объекта XML, представляющих текстовые узлы XML.
Это значит что мне нужно иначе обозвать узлы в файле XML? Тогда я к этим названиям смогу обратиться как к свойствам XMLList?

Добавлено через 26 минут
Переписал имена узлов и сменил ссылки в коде.
Следующий код:
Код AS3:
function Select(e:MouseEvent):void
{
	 trace(menuItem.menuLabel.text[this.i]);
 
}
Ввыдает ошибку ReferenceError: Error #1069: Не удалось найти свойство undefined в String; отсутствует значение по умолчанию.
at index_fla::MainTimeline/Select()


Если использую код без явного указания [this.i], вот такой:
Код AS3:
function Select(e:MouseEvent):void
{
	 trace(menuItem.menuLabel.text);
 
}
То он выдает в окно вывода содержимое текстового поля узла, но только разумеется последнего, а не того по которому кликаю.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Я так понимаю, выше имелось в виду
Код AS1/AS2:
trace( xmlList[this.i].text() );
А с каких пор текстфилды возвращают text как массив? Они возвращают Строку, а у строк нет такой индексации, как Вы изобразили - text[this.i]. Поэтому я не совсем понимаю, что Вы индексируете вообще. Кнопку menuItem? Текстовое поле menuLabel? Как мне кажется, кнопку, в которой потом ищется поле и из него достается текст. Для этого у MouseEvent есть свойство target, указывающее на эту кнопку. Может быть так?
Код AS3:
function Select(e:MouseEvent):void
{
	var menuItem:MenuItem = e.target as MenuItem;
	trace(menuItem.menuLabel.text);
}
__________________
Reality.getBounds(this);

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

Регистрация: Aug 2010
Сообщений: 107
C каких пор незнаю, ибо я почти ничего незнаю о AS3 потому и спрашиваю ). За подсказку спасибо, действительно выручили, двое суток потратил на поиски и ковыряние интернета.


Последний раз редактировалось Mulin; 22.10.2010 в 00:05.
Создать новую тему Ответ Часовой пояс GMT +4, время: 20:35.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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