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

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

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

Регистрация: Jan 2009
Сообщений: 51
Attention Не получается вернуть массив из функции.

Не получается вернуть массив из функции. Вроде все перепробовал...
Внутри функции массив трейсится а получить его в руте не получается ... есть идеи?

Код AS1/AS2:
function getXML()
{
	var my_xml:XML = new XML();
	my_xml.load("test.xml");
 
	my_xml.onLoad = function(success)
	{
		my_xml.ignoreWhite = true;
		my_xml.parseXML(my_xml.toString());
		//trace(my_xml);
 
		var vars:Array = new Array();
 
		_root.date_ = my_xml;
 
		_root.date_ = _root.date_.firstChild;
		_root.date_ = _root.date_.firstChild;
 
		vars[0] = _root.date_.attributes.name;
		_root.date_ = _root.date_.nextSibling;
		vars[1] = _root.date_.attributes.name;
		_root.date_ = _root.date_.nextSibling;
		vars[2] = _root.date_.attributes.name;
		_root.date_ = _root.date_.nextSibling;
		vars[3] = _root.date_.attributes.name;
 
		trace(vars);
 
		return vars;
	}
}
 
getXML();

Старый 27.03.2009, 20:29
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
И не получится. Загрузка, это асинхронная операция. То есть вы не можете в каком-то месте вызвать загрузку xml, подождать пока данные загрузятся и продолжить выполнять скрипт дальше.
Поэтому все действия должны описываться в функциях.
Код:
import mx.utils.Delegate;
var my_xml:XML = new XML ();
my_xml.ignoreWhite = true;
my_xml.onLoad = Delegate.create (this, onLoadXML);
function init () {
	/// действия до xml
	getXML ();
}
function init2 (array:Array) {
	/// действия c xml
	trace (array)
}
function getXML () {
	my_xml.load ("test.xml");
}
function onLoadXML (success) {
	trace(my_xml);
	var vars:Array = new Array ();
	vars[0] = my_xml.firstChild.attributes.name;
	vars[1] = my_xml.firstChild.attributes.name;
	vars[2] = my_xml.firstChild.attributes.name;
	vars[3] =my_xml.firstChild.attributes.name;
	init2 (vars);
}
init ();
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 27.03.2009, 20:41
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 3  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
по моему вобще синтаксис не соблюден..из хелпа:
Код AS1/AS2:
function sum(a:Number, b:Number, c:Number):Number // а слон гиде? (тут возвращаем число..)
{
  return (a+b+c);
}
var newValue:Number = sum(4, 32, 78);
trace(newValue);  // Выведет: 114
З.Ы. как в коде цветом выделять?(


Последний раз редактировалось nOobCrafter; 27.03.2009 в 20:45.
Старый 27.03.2009, 20:54
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Цитата:
Сообщение от nOobCrafter Посмотреть сообщение
З.Ы. как в коде цветом выделять?(
http://www.flasher.ru/forum/showthread.php?t=122539
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 31.03.2009, 12:07
elcard вне форума Посмотреть профиль Отправить личное сообщение для elcard Найти все сообщения от elcard
  № 5  
Ответить с цитированием
elcard

Регистрация: Jan 2009
Сообщений: 51
Спасибо iNils

Код работает исправно:
Код AS1/AS2:
function getXML()
{
	my_xml.ignoreWhite = true;
	my_xml.parseXML(my_xml.toString());
	//trace(my_xml);
 
	var vars:Array = new Array();
 
	_root.date_ = my_xml;
 
	_root.date_ = _root.date_.firstChild;
	_root.date_ = _root.date_.firstChild;
 
	vars[0] = _root.date_.attributes.name;
	_root.date_ = _root.date_.nextSibling;
	vars[1] = _root.date_.attributes.name;
	_root.date_ = _root.date_.nextSibling;
	vars[2] = _root.date_.attributes.name;
	_root.date_ = _root.date_.nextSibling;
	vars[3] = _root.date_.attributes.name;
 
	return vars;
}
 
var my_xml:XML = new XML();
my_xml.load("test.xml");
 
my_xml.onLoad = function(saccess:Boolean)
{
	var vars = getXML();
	trace(vars);
}

Старый 01.04.2009, 15:46
Bred45 вне форума Посмотреть профиль Отправить личное сообщение для Bred45 Найти все сообщения от Bred45
  № 6  
Ответить с цитированием
Bred45

Регистрация: Dec 2008
Сообщений: 87
Не совсем в тему вопрос, но хочу спросить iNils о причинах использования класса Delegate. Чтобы иметь гибкость при выборе имени функции (onLoadXML)?

Старый 02.04.2009, 20:24
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 7  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Цитата:
о причинах использования класса Delegate. Чтобы иметь гибкость при выборе имени функции (onLoadXML)?
Нет, для контроля области видимости внутри функции. В onLoad this ссылается на сам xml, а не на объект в котором мы создали xml.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

Теги
array , return

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

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


 


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


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