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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.08.2011, 07:00
argoniummm вне форума Посмотреть профиль Отправить личное сообщение для argoniummm Найти все сообщения от argoniummm
  № 1  
Ответить с цитированием
argoniummm
[+1.4 08.07.11]

Регистрация: Jun 2011
Сообщений: 217
По умолчанию Ошибка сохранения данных из xml в массив

Код AS3:
{
import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.display.DisplayObject;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
public class App extends MovieClip
{
var myXML:XML;
var XML_URL:String = "http://vk-life.com/data.xml";
var myLoader:URLLoader = new URLLoader();
var img:Array = [];
var question:Array = [];
var answer:Array = [];
var answer_img:Array = [];
var position = 0;
 
public function App()
{
 myLoader.addEventListener(Event.COMPLETE, xmlLoaded);
 myLoader.load(new URLRequest(XML_URL));
 SetQuestion();
}
 
public function xmlLoaded(event:Event):void
{
 myXML = new XML(myLoader.data);
 for each (var element:XML in myXML.elements())
 {
  if (element.name() == "img")
  {
   for each (var imggg:XML in element.elements())
   {
    img.push(imggg.toString());
   }
  }
 
  if (element.name() == "question")
  {
   for each (var questionnn:XML in element.elements())
   {
    question.push(questionnn.toString);
   }
  }
 
  if (element.name() == "answer")
  {
   for each (var answerrr:XML in element.elements())
   {
    answer.push(answerrr.toString());
   }
  }
 
 
  if (element.name() == "answer_img")
  {
   for each (var answer_imggg:XML in element.elements())
   {
    answer_img.push(answer_imggg.toString());
   }
  }
 
 }
}
 
public function SetQuestion ()
{
 question_txt.text = answer[position];
}
 
}
 
}
Данные флеш получает но почему то не хочет сохранять их в массив (получение данных я проверял так:
Код AS3:
 if (element.name() == "question")
  {
   for each (var questionnn:XML in element.elements())
   {
    question.push(questionnn.toString);
    trace(question.push(questionnn.toString));
   }
  }

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

Регистрация: Jul 2006
Адрес: Питер
Сообщений: 2,083
Отправить сообщение для MrPoma с помощью Skype™
Попробуйте сделать современно:
Код AS3:
myXML = new XML(myLoader.data);
var img_elements:XMLList = myXML..img;
for each (var img:XML in img_elements){
  img.push(img.toXMLString());
}
Возможно, это из-за того, что вы используете toString instead of toXMLString.
__________________
жж | твттр | гглплс | фсбк | вкнткт | гтхб

Старый 15.08.2011, 07:27
argoniummm вне форума Посмотреть профиль Отправить личное сообщение для argoniummm Найти все сообщения от argoniummm
  № 3  
Ответить с цитированием
argoniummm
[+1.4 08.07.11]

Регистрация: Jun 2011
Сообщений: 217
Всё равно не работает. Кстати забыл, вот структура xml:
Код:
<data>
<img>
<img0>img0</img0>
<img1>img1</img1>
</img>
<question>
<question0>question0</question0>
<question1>question1</question1>
</question>
<answer>
<answer0>answer0</answer0>
<answer1>answer1</answer1>
</answer>
<answer_img>
<answer_img0>answer_img0</answer_img0>
<answer_img1>answer_img1</answer_img1>
</answer_img>
</data>

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

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
Зачем вам xml если вы не соблюдаете иерархию?
Код:
<items>
   <item id="0">
      <image><image>
      <question></question>
      <answer></answer>
      <answer_image></answer_image>
   </item>
   <item id="1">
      <image><image>
      <question></question>
      <answer></answer>
      <answer_image></answer_image>
   </item>
   <item id="2">
      <image><image>
      <question></question>
      <answer></answer>
      <answer_image></answer_image>
   </item>
</items>

Старый 15.08.2011, 08:53
argoniummm вне форума Посмотреть профиль Отправить личное сообщение для argoniummm Найти все сообщения от argoniummm
  № 5  
Ответить с цитированием
argoniummm
[+1.4 08.07.11]

Регистрация: Jun 2011
Сообщений: 217
А в чём у меня ошибка то? Почему он получает данные но не сохранят их в массив?


Последний раз редактировалось argoniummm; 15.08.2011 в 08:59.
Старый 15.08.2011, 09:49
kackbip вне форума Посмотреть профиль Отправить личное сообщение для kackbip Найти все сообщения от kackbip
  № 6  
Ответить с цитированием
kackbip
 
Аватар для kackbip

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
1) Очень неудобочитаемый код из-за того что вы воспользовались неудобным инструментом для работы с xml.
Вот как лучше с xml работать:
http://help.adobe.com/ru_RU/ActionSc...0204-7e72.html
2) Названия переменных, которые ничего не говорят об их предназначении.
3) Как вы определили, что данные в массив не сохраняются? Я вижу, что вы проверили получение данных, а где вы проверили, есть ли данные в массиве? Должны строки записываться в массив. Похоже проблема где-то в другом месте.

Старый 15.08.2011, 11:36
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 7  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
questionnn.toString это совсем не то, что видимо ожидается
попробуй questionnn.toString()

Добавлено через 28 минут
да и присоединяюсь к высказавшимся,
Код AS3:
if (element.name() == "img")
выглядит диковато для E4X
вот так яснее будет, не?
Код AS3:
var element:String;
myXML = new XML(myLoader.data);
 
 
for each(element in myXML.img.*)
{
	img.push(element);
}
 
for each(element in myXML.question.*)
{
	question.push(element);
}
// и т.д.


Последний раз редактировалось silin; 15.08.2011 в 12:06.
Старый 15.08.2011, 12:57
argoniummm вне форума Посмотреть профиль Отправить личное сообщение для argoniummm Найти все сообщения от argoniummm
  № 8  
Ответить с цитированием
argoniummm
[+1.4 08.07.11]

Регистрация: Jun 2011
Сообщений: 217
Хм... У меня появилась ещё 1 проблема:
Вот весь класс, да я знаю что многое написано не рационально.
Код AS3:
package 
{
	import flash.display.*;
	import flash.desktop.*;
	import flash.events.*;
	import flash.net.*;
	import flash.text.*;
	import flash.xml.*;
 
	public class App extends MovieClip
	{
		var myXML:XML;
		var XML_URL:String = "http://vk-life.com/data.xml";
		var myLoader:URLLoader = new URLLoader();
		var img:Array = [];
		var question:Array = [];
		var answer:Array = [];
		var answer_img:Array = [];
		var position:int = 0;
 
		var number:int = 0;
		var my_answer:Array = [];
 
		var x_centre = 566;
		var y_centre = 256;
		var size = 15;
 
		public function App()
		{
			myLoader.addEventListener(Event.COMPLETE, xmlLoaded);
			myLoader.load(new URLRequest(XML_URL));
			SetQuestion();
			//stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
			exit_btn.addEventListener(MouseEvent.CLICK, Exit);
		}
 
		public function xmlLoaded(event:Event):void
		{
			var element:String;
			myXML = new XML(myLoader.data);
 
			for each (element in myXML.img.*)
			{
				img.push(element);
			}
 
			for each (element in myXML.question.*)
			{
				question.push(element);
			}
 
			for each (element in myXML.answer.*)
			{
				answer.push(element);
			}
 
			for each (element in myXML.answer_img.*)
			{
				answer_img.push(element);
			}
 
		}
 
		public function processXML()
		{
			 var image_question:MovieClip = new MovieClip();
			var imageLoader = new Loader();
			image_question.addChild(imageLoader);
			imageHolder.mouseChildren = false;
			imageLoader.x = 0;
			imageLoader.y = 0;
			imageLoader.load(new URLRequest(img[k]));
			addChild(image_question);
 
		}
 
		public function SetQuestion()
		{
			question_txt.text = answer[position];
		}
 
		public function Exit(event:Event):void
		{
			// getURL("javascript: closeTaskWindow("")");
		}
 
 
		/* private function keyUpHandler(event:KeyboardEvent):void
		{
			trace(event.keyCode);
 
			if (event.keyCode == 65)
			{
				my_answer.push("ф");
				number = number + 1;
 
			}
 
			if (event.keyCode == 66)
			{
				my_answer.push("и");
				number = number + 1;
 
			}
 
			if (event.keyCode == 67)
			{
				my_answer.push("с");
				number = number + 1;
 
			}
 
			if (event.keyCode == 68)
			{
				my_answer.push("в");
				number = number + 1;
 
			}
 
			if (event.keyCode == 69)
			{
				my_answer.push("у");
				number = number + 1;
 
			}
 
			if (event.keyCode == 70)
			{
				my_answer.push("а");
				number = number + 1;
 
			}
 
			if (event.keyCode == 71)
			{
				my_answer.push("п");
				number = number + 1;
 
			}
 
			if (event.keyCode == 72)
			{
				my_answer.push("р");
				number = number + 1;
 
			}
 
			if (event.keyCode == 73)
			{
				my_answer.push("ш");
				number = number + 1;
 
			}
 
			if (event.keyCode == 74)
			{
				my_answer.push("о");
				number = number + 1;
 
			}
 
			if (event.keyCode == 75)
			{
				my_answer.push("л");
				number = number + 1;
 
			}
 
			if (event.keyCode == 76)
			{
				my_answer.push("д");
				number = number + 1;
 
			}
 
			if (event.keyCode == 77)
			{
				my_answer.push("ь");
				number = number + 1;
 
			}
 
			if (event.keyCode == 78)
			{
				my_answer.push("т");
				number = number + 1;
 
			}
 
			if (event.keyCode == 79)
			{
				my_answer.push("щ");
				number = number + 1;
 
			}
 
			if (event.keyCode == 80)
			{
				my_answer.push("з");
				number = number + 1;
 
			}
 
			if (event.keyCode == 81)
			{
				my_answer.push("й");
				number = number + 1;
 
			}
 
			if (event.keyCode == 82)
			{
				my_answer.push("к");
				number = number + 1;
 
			}
 
			if (event.keyCode == 83)
			{
				my_answer.push("ы");
				number = number + 1;
 
			}
 
			if (event.keyCode == 84)
			{
				my_answer.push("е");
				number = number + 1;
 
			}
 
			if (event.keyCode == 85)
			{
				my_answer.push("г");
				number = number + 1;
 
			}
 
			if (event.keyCode == 86)
			{
				my_answer.push("м");
				number = number + 1;
 
			}
 
			if (event.keyCode == 87)
			{
				my_answer.push("ц");
				number = number + 1;
 
			}
 
			if (event.keyCode == 88)
			{
				my_answer.push("ч");
				number = number + 1;
 
			}
 
			if (event.keyCode == 89)
			{
				my_answer.push("н");
				number = number + 1;
 
			}
 
			if (event.keyCode == 90)
			{
				my_answer.push("я");
				number = number + 1;
 
			}
			if (event.keyCode == 186)
			{
				my_answer.push("ж");
				number = number + 1;
 
			}
 
			if (event.keyCode == 222)
			{
				my_answer.push("э");
				number = number + 1;
 
			}
 
			if (event.keyCode == 188)
			{
				my_answer.push("б");
				number = number + 1;
 
			}
 
			if (event.keyCode == 190)
			{
				my_answer.push("ю");
				number = number + 1;
 
			}
 
			if (event.keyCode == 219)
			{
				my_answer.push("х");
				number = number + 1;
 
			}
 
			if (event.keyCode == 221)
			{
				my_answer.push("ъ");
				number = number + 1;
 
			}
		} 
 
 
	}
 
}
Вот такие ошибки:
D:\загадки\App.as, строка 6 1152: Конфликт с наследуемым определением flash.events:EventDispatcher.toString в пространстве имен public.
ComponentShim (скомпилированный фрагмент), строка 1 5000: В класс "fl.core.ComponentShim" должен входить подкласс "flash.display.MovieClip", так как он связывается с символом такого же типа в библиотеке.
ComponentShim (скомпилированный фрагмент), строка 1 5000: В класс "fl.controls.Label" должен входить подкласс "flash.display.MovieClip", так как он связывается с символом такого же типа в библиотеке.
ComponentShim (скомпилированный фрагмент), строка 1 5000: В класс "fl.controls.TextArea" должен входить подкласс "flash.display.MovieClip", так как он связывается с символом такого же типа в библиотеке.
ComponentShim (скомпилированный фрагмент), строка 1 5000: В класс "fl.controls.TextInput" должен входить подкласс "flash.display.MovieClip", так как он связывается с символом такого же типа в библиотеке.
ComponentShim (скомпилированный фрагмент), строка 1 5000: В класс "fl.controls.UIScrollBar" должен входить подкласс "flash.display.MovieClip", так как он связывается с символом такого же типа в библиотеке.

Старый 15.08.2011, 13:35
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 9  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
конкретно помочь тут нечем
похоже, что источники этих ошибок из-за бардака с объектами\компонентами, которые положены на таймлайн вручную и для которых IDE, генерит свои объявления и т.п.
надо наводить порядок в fla, отключить automatically declare stage instances в настройкаах, объявить их явно в классе, тогда возможно станет понятнее

Старый 15.08.2011, 13:55
argoniummm вне форума Посмотреть профиль Отправить личное сообщение для argoniummm Найти все сообщения от argoniummm
  № 10  
Ответить с цитированием
argoniummm
[+1.4 08.07.11]

Регистрация: Jun 2011
Сообщений: 217
Хм... Я не понимаю это... Можете помочь если я выложу исходники: Просто я сижу уже пару часов и не могу понять... http://***********/25196115

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

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

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


 


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


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