![]() |
|
||||||||||
|
|||||
|
Регистрация: Sep 2011
Сообщений: 22
|
Посоветуйте как можно передать переменную из класса в класс. Решил разобрать xml и создать массив и его уже передать в другой класс но ниче не выходит . Привожу оба класса. Поправьте пожалуйста. Или подскажите другой вариант.
package coms { import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; import flash.display.Sprite; public class Graphic { private var urlLoader:URLLoader; private var data:XML; public var records:XMLList; public var result:Array; private var date:String; private var time:String; private var open:String; private var close:String; private var high:String; private var low:String; public function Graphic() { urlLoader = new URLLoader; urlLoader.addEventListener(Event.COMPLETE, xmlLoaded); } public function load(path:String):void { urlLoader.load(new URLRequest(path)); } private function xmlLoaded(e:Event):void { //trace(urlLoader.data); data = XML(e.target.data); records = data.Records.Record; //trace(records.Date[10]); candle(); } private function candle() { date = records.Date; time = records.Time; open = records.Open; close = records.Close; high = records.High; low = records.Low; result = [date, time, open, close, high, low]; //trace(result); } public function getResult():Array { return result; } } } package coms { import flash.display.Sprite; import flash.display.Graphics; import flash.display.Shape; import flash.events.Event; public class ViewGraphics extends Sprite { private var dataXML:Graphic = new Graphic(); public function ViewGraphics() { viewXml(dataXML.getResult()); } private function viewXml(vars:Array):void { trace("high " +vars); } } } |
|
|||||
|
[+4 06.05.14]
|
В вашем примере dataXML не запускает даже метод load чтобы загрузить сам xml. А метод getResult выводит null ибо не определена переменная result.
Структура ViewGraphics должна быть такой
__________________
Марк Tween |
|
|||||
|
Регистрация: Sep 2011
Сообщений: 22
|
чет я немного не понял. Я на линии времени и так вызываю load. Вот код что пишу на линии времени:
как тут быть? |
|
|||||
|
Не пишите на линии времени. Код загрузки XML асинхронный. т.е. он не будет вызываться четко строка за строкой. А только по факту загрузки либо ошибки (если у вас стоит подходящий обработчик)
__________________
adobe AS3 manual |
|
|||||
|
Регистрация: Sep 2011
Сообщений: 22
|
сделал так как советовали но не понял что за CustomEvent вы написали. Флеш ругается на него что его не существует.. Подскажите пожалуйста
|
|
|||||
|
Там не нужен никакой CustomEvent, это просто лишняя заморочка.
Лучше уж так: private var dataXML:Graphic = new Graphic(); public function ViewGraphics() { dataXML.addEventListener(Event.COMPLETE , onLoad); dataXML.load('someXML.xml'); } public function onLoad(e:Event) { trace(dataXML.getResult()); } package coms { import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; import flash.display.Sprite; public class Graphic extends EventDispatcher { private var urlLoader:URLLoader; private var data:XML; public var records:XMLList; public var result:Array; private var date:String; private var time:String; private var open:String; private var close:String; private var high:String; private var low:String; public function Graphic() { urlLoader = new URLLoader; urlLoader.addEventListener(Event.COMPLETE, xmlLoaded); } public function load(path:String):void { urlLoader.load(new URLRequest(path)); } private function xmlLoaded(e:Event):void { //trace(urlLoader.data); data = XML(e.target.data); records = data.Records.Record; //trace(records.Date[10]); candle(); dispatchEvent(e); // доставляем событие } private function candle() { date = records.Date; time = records.Time; open = records.Open; close = records.Close; high = records.High; low = records.Low; result = [date, time, open, close, high, low]; //trace(result); } public function getResult():Array { return result; } } } |
|
|||||
|
Регистрация: Sep 2011
Сообщений: 22
|
И так сделал .... Ругается на public class Graphic extends EventDispatcher . Ошибка Определение базового класса EventDispatcher не найдено.
|
|
|||||
|
Регистрация: Sep 2011
Сообщений: 22
|
Да чето не сообразил сразу) . Да все получилось но одно но... При получении массива данных в другой клас я не могу работать с массивами в этом массиве , а именно мне нужны
date time open close high low в них данные почему то в строчке . Надо сплитом бить каждый, что не есть хорошо. Можно как то передать из класса в класс массивы масива или может есть какой то вариант попроще и получше, потому что данных в массивах очень много около 10 000. Заранее спасибо всем за ответы. |
|
|||||
|
а зачем так сложно, массивы в массивах.
Передавайте хотя-бы тип Object а лучше вообще свой тип объекта, который будет содержать нужные поля.
__________________
adobe AS3 manual |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:08. |
|
|
« Предыдущая тема | Следующая тема » |
|
|