Форум 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;
            }
        }
    }
 
}
Спасибо.

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

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

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


 


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


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