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

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

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

Регистрация: Dec 2008
Сообщений: 21
По умолчанию Flash+Vector.<TextField>+XML

Столкнулся в AS3.0 с проблемой следующего характера.
Есть типизированный массив текстовых полей Vector.<TextField>. В каждое текстовое поле этого массива подгружается текстовая иноформация из внешнего XML-файла. При разработке вроде бы все правильно прописано, компилирует, но при запуске пишет ошибку в аутпуте следующего характера:

TypeError: Error #1010: Термин не определен и не имеет свойств.
at News/createNewsField()
at News/completeListener()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()**

При этом на стэйдже отображается только первое текстовое поле с текстом из XML, а остальные не хочет.

**По идее, этих ошибок вообще не должно возникать, потому что все указанные выше методы не имеют отношения к массиву текстовых полей, а к конструктору и к лоадеру. Но если не работать с массивом, ошибок не выдает и все работает нормально.

Далее идет скрипт, мож кто увидит в чем ошибся, пока не нашел сам…

Листинг:

Код AS3:
package  {
import flash.display.*;
import flash.text.*;
import flash.events.*;
import flash.net.*;
 
    public class NewsPrimitive extends Sprite {
 
        // Constants:
        // Public Properties:
        private var newsXML:XML;
        private var urlLoader:URLLoader;
        private var arrField:Vector.<TextField> = new Vector.<TextField>();
        // Private Properties:
 
        // Initialization:
        public function NewsPrimitive() {
        createGraphicsContainer();
        XMLLoader();
        }
 
        // Public Methods:
        public function XMLLoader() {
            var urlRequest:URLRequest = new URLRequest("news.xml");
            urlLoader = new URLLoader();
            urlLoader.addEventListener(Event.COMPLETE, completeListener);
            urlLoader.load(urlRequest);
        }
        // Protected Methods:
        private function completeListener(e:Event):void {
            newsXML = new XML(urlLoader.data);
            createNewsField(newsXML.BLOCK);
        }
 
        private function createGraphicsContainer():void {
            var graphicsContainer = new Sprite();
            addChild(graphicsContainer);
        }
 
        private function createNewsField(blocks:XMLList):void {
            var ii:int;
            for each (var block:XML in blocks) {
            arrField[ii]=new TextField();
            arrField[ii].text += "Date: " + block[ii].DATE +"\nText: " + block[ii].TXT + "\n\n";
            arrField[ii].autoSize = TextFieldAutoSize.CENTER;
            arrField[ii].y+= 100;
            addChild(arrField[ii]);
            ii+=1;
            }
        }
    }
 
}
Спасибо.

Старый 27.12.2008, 19:55
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 2  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
ну хотя бы тот факт что ii не проинициализирована может вызывать ошибку

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

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
Плохая привычка искать ошибки в чистом поле.
Дебажить надо.

Старый 28.12.2008, 12:14
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Для начала покажите загружаемый XML. Судя по коду, вы пытаетесь найти подузлы DATE и TXT, хотя у меня есть подозрение, что это атрибуты.

Старый 28.12.2008, 18:31
stalkerweb вне форума Посмотреть профиль Отправить личное сообщение для stalkerweb Найти все сообщения от stalkerweb
  № 5  
Ответить с цитированием
stalkerweb
 
Аватар для stalkerweb

Регистрация: Dec 2008
Сообщений: 21
Ошибка была тут:

Код AS3:
arrField[ii].text += "Date: " + block[ii].DATE +"\nText: " + block[ii].TXT + "\n\n";
В цикле for-each-in перебирается каждый элемент и соответственно в каждый элемент вектора заносится. Нужно было просто убрать [ii] в обращении к объекту класса XML.

Код AS3:
arrField[ii].text += "Date: " + block.DATE +"\nText: " + block.TXT + "\n\n";
А инициализация… это просто на следующих этапах разработки. int при разработке по умолчанию в 0 инициализируется.

Добавлено через 45 секунд
Цитата:
Сообщение от __etc Посмотреть сообщение
Для начала покажите загружаемый XML. Судя по коду, вы пытаетесь найти подузлы DATE и TXT, хотя у меня есть подозрение, что это атрибуты.
Не, это были-таки узлы

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

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

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


 


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


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