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

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

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

Регистрация: Jul 2013
Сообщений: 29
По умолчанию URLLoader , результат разбить на строки в массив

В данный момент берутся все "анекдоты" и добавляются в 0-ую ячейку массива.
Подскажите плиз, как сделать так, что бы каждый анекдот был в новой ячейки массива.
или хотя бы в какую сторону копать? нужно в ручную парсить или существует какая-нибудь функция\событие?



Код AS3:
import flash.net.*;
import flash.events.*;
var myArray:Array = []; // создаем пустой массив
var loader:URLLoader = new URLLoader();
loader.load(new URLRequest("C:\q.txt"));
loader.addEventListener(Event.COMPLETE,onComplete);
 
 
function onComplete(event:Event):void
{
	var myxml:XML = XML(event.target.data);
	//trace(myxml.anekdot.text());
	myArray.push(myxml.anekdot.text()); 
	//trace(myArray.length);
trace(myArray);
}

Код:
<?xml version="1.0" encoding="utf-8"?>
<doc>
<anekdot>fffffff</anekdot>
<anekdot>gggggggg</anekdot>
<anekdot>hhhhhhh</anekdot>
<anekdot>3jjjjjjjj</anekdot>
<anekdot>kkkkkkkk</anekdot>
<anekdot>lllllll</anekdot>
<anekdot>eeeeeeeee</anekdot>
</doc>


Последний раз редактировалось infbyte; 23.07.2013 в 19:51.
Старый 23.07.2013, 20:04
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 2  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
Код AS3:
function onComplete(event:Event):void
{
	var myxml:XML = XML(event.target.data);
	for each (var anekdot:String in myxml.anekdot)
	{
	    trace(anekdot);
        myArray.push(anekdot);
	}
}

Старый 14.07.2014, 04:51
infbyte вне форума Посмотреть профиль Отправить личное сообщение для infbyte Найти все сообщения от infbyte
  № 3  
Ответить с цитированием
infbyte

Регистрация: Jul 2013
Сообщений: 29
подниму старую темку...
Подскажите плиз.
А почему кстати массив myArray не виден вне функции onComplete?
как сделать что бы можно было его использовать из других участков кода?
например вот так:
Код AS1/AS2:
function onComplete(event:Event):void
{
	var myxml:XML = XML(event.target.data);
	for each (var anekdot:String in myxml.anekdot)
	{
 
        myArray.push(anekdot);
	}
}
  trace(anekdot);

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
В вашем примере массив myArray как раз таки виден вне метода onComplete.
------------------------------
Код AS3:
trace(anekdot);
Так не сработает. Тут вы даже не обращаетесь к массиву. Доступ к элементам массива осуществляется через квадратные скобки в которых указывается индекс (номер элемента от 0 до myArray.length-1).
Например для первого элемента
Код AS3:
trace(myArray[0]);

Старый 14.07.2014, 16:48
infbyte вне форума Посмотреть профиль Отправить личное сообщение для infbyte Найти все сообщения от infbyte
  № 5  
Ответить с цитированием
infbyte

Регистрация: Jul 2013
Сообщений: 29
Не правильно написал вчера немного код.
Вот так сейчас у меня:


Код AS3:
import flash.net.*;
import flash.events.*;
var myArray:Array = [];  
var loader:URLLoader = new URLLoader();
loader.load(new URLRequest("G:\1.txt"));
loader.addEventListener(Event.COMPLETE,onComplete);
 
 
function onComplete(event:Event):void
{
	var myxml:XML = XML(event.target.data);
	for each (var an:String in myxml.an)
	{
 
        myArray.push(an);
 
	}
 
}
 
		trace(myArray[0]);
В результате пишет undefined , почему-то не видит массив этот.

Но если вывод сделать внутри функции onComplete, то выводит массив.
не могу понять почему

или у меня что-то уже с самим IDE...


Последний раз редактировалось infbyte; 14.07.2014 в 18:20.
Старый 14.07.2014, 18:59
Nooob вне форума Посмотреть профиль Отправить личное сообщение для Nooob Найти все сообщения от Nooob
  № 6  
Ответить с цитированием
Nooob
 
Аватар для Nooob

Регистрация: Mar 2007
Сообщений: 319
потому onComplete вызовется позже trace(myArray[0]). Флешовые события загрузки, декодирования, таймера и прочего происходят в следующем кадре или позже.

Старый 15.07.2014, 01:05
infbyte вне форума Посмотреть профиль Отправить личное сообщение для infbyte Найти все сообщения от infbyte
  № 7  
Ответить с цитированием
infbyte

Регистрация: Jul 2013
Сообщений: 29
У меня есть кадр, где пользователь выбирает тип игры.
В зависимости от типа игры, подгружаются различные файлы в массив.
после этого сразу же переходит на следующий кадр с игровым столом.


В кадре с игровым столом(12 кадр) нужно узнать длину массива.
Но по какой-то причине, файл не успевает скачиватьтся и length массива возвращает 0


Подскажите плиз плиз, как сделать так, что бы на следующий кадр можно было перейти только после загрузки файла,а не моментально.


Вот код кадра с выбором игры:

Код AS3:
stop();
var type_game:int;
 
 
import flash.net.*;
import flash.events.*; 
var myArray:Array = []; // создаем пустой массив
Security.loadPolicyFile("http://ya.ru/crossdomain.xml");
var loader:URLLoader = new URLLoader();
//loader.load(new URLRequest("http://ya.ru/"+type_game+".txt"));//переместил
loader.addEventListener(Event.COMPLETE,onComplete);
 
 
function onComplete(event:Event):void
{	var myxml:XML = XML(event.target.data);
	for each (var anekdot:String in myxml.anekdot)
	{	     
        myArray.push(anekdot);
	}
}
 
 
 
o1.addEventListener(MouseEvent.CLICK, qwe2);  
function qwe2(event:MouseEvent):void{  	
	type_game = 1;/////////////////@
	loader.load(new URLRequest("http://ya.ru/"+type_game+".txt"));
	gotoAndStop(12);
}
 
 
//////////////////////////////////////////////
o2.addEventListener(MouseEvent.CLICK, qwe4);  
function qwe4(event:MouseEvent):void{  
        type_game = 2;////////////////@
	loader.load(new URLRequest("http://ya.ru/"+type_game+".txt"));
	gotoAndStop(12);
}
код 12 кадра:
Код AS3:
trace(myArray.length);// возвращает 0
Если выполнять этот код не сразу, а например через кнопку , секунд через 5, то возвращает все как нужно. т.е. склоняюсь к тому что не успевает выкачаться

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

Регистрация: Mar 2007
Сообщений: 319
gotoAndStop(12) в onComplete. ещё раз повторяю нужно дожидаться загрузки и потом выполнять то что нужно

Старый 15.07.2014, 01:28
infbyte вне форума Посмотреть профиль Отправить личное сообщение для infbyte Найти все сообщения от infbyte
  № 9  
Ответить с цитированием
infbyte

Регистрация: Jul 2013
Сообщений: 29
теперь понял.
просто думал что просто вызывается позже, а оказывается вызывается позже и работает до тех пор пока не скачает.
спасибо)

Старый 15.07.2014, 12:56
Dmitriy154 вне форума Посмотреть профиль Отправить личное сообщение для Dmitriy154 Найти все сообщения от Dmitriy154
  № 10  
Ответить с цитированием
Dmitriy154

Регистрация: Feb 2014
Сообщений: 192
вместо XML использовать String и метод split

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

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

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


 


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


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