|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Как исправить ошибку 1009 при загрузке XML?
Есть клиент
package{ // Клиент, выводящий список книг издательства посредством адаптера ListDisplayField import flash.display.MovieClip; import flash.text.*; import flash.events.*; import flash.net.*; public class Client1 extends MovieClip{ var xml:XML; var xmlLoader:URLLoader; var newBookListField:ListDisplayField; public function Client1(){ //Создаем ListDisplayField (адаптер) var newBookListField:ListDisplayField = new ListDisplayField(); //Выбираем стиль текста var format:TextFormat = new TextFormat(); format.size = 14; format.font = "Arial"; //Устанавливаем стиль и положение текстового поля newBookListField.x = 20; newBookListField.y = 20; newBookListField.width = 500; newBookListField.height = 300; newBookListField.border = true; newBookListField.defaultTextFormat = format; //Создаем список из O'Reilly New Books Feed (Atom) var newBooksURL = "http://www.oreillynet.com/pub/feed/29"; xml = new XML(); var xmlURL:URLRequest = new URLRequest(newBooksURL); xmlLoader = new URLLoader(xmlURL); xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded); //Добавляем текстовое поле в список отображения addChild(newBookListField); } private function xmlLoaded(evtObj:Event){ xml = XML(xmlLoader.data); //устанавливаем пространство имен xml по умолчанию if (xml.namespace("") != undefined){ default xml namespace = xml.namespace(""); } //Добавляем в ListDisplayField названия новых книг for each (var bookTitle:XML in xml..entry.title){ newBookListField.addItem(bookTitle.toString()); } } } }
__________________
Да будет ФЛЭШ ! |
|
|||||
Регистрация: Jun 2011
Сообщений: 12
|
на какой строчке ошибка то?
можешь и xml показать.. |
|
|||||
ошибка появляется в панели "output", строка никакая не присваивается
ссылка на xml есть в коде, http://www.oreillynet.com/pub/feed/29
__________________
Да будет ФЛЭШ ! |
|
|||||
Регистрация: Jun 2011
Сообщений: 12
|
попробуй так:
|
|
|||||
нет, не помогло, тоже самое выдается
__________________
Да будет ФЛЭШ ! |
|
|||||
Исправил так:
package{ // Клиент, выводящий список книг издательства посредством адаптера ListDisplayField import flash.display.MovieClip; import flash.text.*; import flash.events.*; import flash.net.*; public class Client1 extends MovieClip{ var xml:XML; var xmlLoader:URLLoader; var newBookListField:ListDisplayField; public function Client1(){ //Создаем ListDisplayField (адаптер) var newBookListField:ListDisplayField = new ListDisplayField(); //Выбираем стиль текста var format:TextFormat = new TextFormat(); format.size = 14; format.font = "Arial"; //Устанавливаем стиль и положение текстового поля newBookListField.x = 20; newBookListField.y = 20; newBookListField.width = 500; newBookListField.height = 300; newBookListField.border = true; newBookListField.defaultTextFormat = format; //Создаем список из O'Reilly New Books Feed (Atom) var newBooksURL = "http://www.oreillynet.com/pub/feed/29"; xml = new XML(); var xmlURL:URLRequest = new URLRequest(newBooksURL); xmlLoader = new URLLoader(xmlURL); xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded); //Добавляем текстовое поле в список отображения addChild(newBookListField); } private function xmlLoaded(evtObj:Event){ var xml = XML(xmlLoader.data); //устанавливаем пространство имен xml по умолчанию if (xml.namespace("") != undefined){ var ATOM:Namespace = new Namespace("http://www.w3.org/2005/Atom"); default xml namespace = ATOM; } //Добавляем в ListDisplayField названия новых книг for each (var bookTitle:XML in xml..entry.title){ newBookListField.addItem(bookTitle.toString()); } } } } |
|
|||||
не знаю что за ошибка, у меня всё выводится
package { import flash.display.Sprite; import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; /** * ... * @author */ [Frame(factoryClass="Preloader")] public class Main extends Sprite { public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point _loader = new URLLoader(new URLRequest("http://www.oreillynet.com/pub/feed/29")); _loader.addEventListener(Event.COMPLETE, onLoadComplete); } private var _loader:URLLoader; private function onLoadComplete(event:Event):void { var xml:XML = new XML(_loader.data); var ATOM:Namespace = new Namespace("http://www.w3.org/2005/Atom"); default xml namespace = ATOM; for each (var entry:XML in xml.entry) { trace("title=" + entry.title); } } } } |
|
|||||
Цитата:
ListDisplayList.as package{ import flash.text.TextField; public class ListDisplayField extends TextField implements IListDisplay{ private var aList:Array; public function ListDisplayField(){ super(); // вызываем конструктор TextField this.clear(); } public function addItem(s:String):void{ this.aList.push(s); this.update(); } public function deleteItemAt(i:uint):Boolean{ if((i > 0) && (i <= aList.length)){ aList.splice(i-1, 1); this.update(); return true; } else { return false; } } public function clear():void{ aList = []; this.update(); } internal function update(){ var listText:String = ""; //обраюотаем массив для создания строки, разделенной переводами каретки for (var i:Number = 0; i < aList.length; i++){ listText += aList[i] + "\r"; } super.text = listText; } override public function set text(s:String):void{ throw new Error("Cannot directly set text property - use addItem() method"); } override public function set htmlText(s:String):void{ throw new Error("Cannot directly set htmlText property"); } override public function appendText(s:String):void{ throw new Error("Cannot append text - use addItem() method"); } override public function replaceSelectedText(s:String):void{ throw new Error("Cannot replace selected text"); } override public function replaceText(beginIndex:int, endIndex:int, newText:String):void{ throw new Error("Cannot replace text"); } } } package{ public interface IListDisplay{ function addItem(s:String):void; function deleteItemAt(n:uint):Boolean; function clear():void; } } package{ // Клиент, выводящий список книг издательства посредством адаптера ListDisplayField import flash.display.MovieClip; import flash.text.*; import flash.events.*; import flash.net.*; public class Client1 extends MovieClip{ var xml:XML; var xmlLoader:URLLoader; var newBookListField:ListDisplayField; public function Client1(){ //Создаем ListDisplayField (адаптер) var newBookListField:ListDisplayField = new ListDisplayField(); //Выбираем стиль текста var format:TextFormat = new TextFormat(); format.size = 14; format.font = "Arial"; //Устанавливаем стиль и положение текстового поля newBookListField.x = 20; newBookListField.y = 20; newBookListField.width = 500; newBookListField.height = 300; newBookListField.border = true; newBookListField.defaultTextFormat = format; //Создаем список из O'Reilly New Books Feed (Atom) var newBooksURL = "http://www.oreillynet.com/pub/feed/29"; xml = new XML(); var xmlURL:URLRequest = new URLRequest(newBooksURL); xmlLoader = new URLLoader(xmlURL); xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded); //Добавляем текстовое поле в список отображения addChild(newBookListField); } private function xmlLoaded(evtObj:Event){ var xml = XML(xmlLoader.data); //устанавливаем пространство имен xml по умолчанию if (xml.namespace("") != undefined){ var ATOM:Namespace = new Namespace("http://www.w3.org/2005/Atom"); default xml namespace = ATOM; } //Добавляем в ListDisplayField названия новых книг for each (var bookTitle:XML in xml..entry.title){ newBookListField.addItem(bookTitle.toString()); } } } } в первом файле не верно имя написал, правильно: ListDisplayField.as Добавлено через 22 минуты вот так кстати у меня тоже выводит for each (var bookTitle:XML in xml.entry){ trace("title=" + bookTitle.title); //newBookListField.addItem(bookTitle.title); } хотя почему не понятно, метод addItem определен в классе ListDisplayField, в качестве параметра берет строку, с другим клиентом работает, с этим нет.
__________________
Да будет ФЛЭШ ! |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Так ошибка в другом – у Вас нет никакого newBookListField в хендлере.
Потому что объявленная приватная переменная не инициализируется, то есть остается null. Вместо нее Вы создаете новую и инициализируете её.
__________________
Reality.getBounds(this); |
Часовой пояс GMT +4, время: 11:07. |
|
« Предыдущая тема | Следующая тема » |
Теги |
1009 , xml |
|
|