Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Открыть, прочитать файл и создать мувиклип (http://www.flasher.ru/forum/showthread.php?t=153947)

Likoniko 10.04.2011 19:34

Открыть, прочитать файл и создать мувиклип
 
Идея такая : У меня в файле написано
{
news1
}
{
news2
}
и.т.д

Надо чтоб когда открывалась скобка , флэш создовал мувиклип и внутрь мувиклипа (в текстфилд ) вписовал бы то что должно было вместо news. Проблема в том, как рассположить мувиклипы друг под другом и как вписывать в поля? Не ну понятно что прировнять результат к полю, а если мне надо динамично? Не залезать же в флэш и создовать каждый раз новое поле.

i.o. 10.04.2011 19:51

ну как вариант (не самый плохой), вместо фигурных скобок воспользоваться форматом данных XML

Likoniko 10.04.2011 19:56

дайте пример пожалуйста, я вообще 0

i.o. 10.04.2011 19:58

Код:

<?xml version='1.0' encoding='UTF-8'?>
<news>
        <newsBlock>Новостной блок номер 1</newsBlock>
        <newsBlock>Новостной блок номер 2</newsBlock>
</news>


Likoniko 10.04.2011 20:24

попробую ну а что это изменит?

Psycho Tiger 10.04.2011 21:13

Вам не придётся писать собственный парсер, к примеру.

carrotoff 10.04.2011 21:13

Цитата:

попробую ну а что это изменит?
В первую очередь, изменит это подход с Вашего на человеческий.

Цитата:

а если мне надо динамично? Не залезать же в флэш и создовать каждый раз новое поле.
Ну вся идея как раз в том и состоит, что вы прогружаете XML, считаете сколько Вам необходимо блоков, и создаете их. И редактировать (надеюсь, формировать динамически) нужно будет именно XML, а не трогать код AS

Psycho Tiger 10.04.2011 22:02

Искренни надеюсь что этот пример, состряпанный на скорую руку Вам поможет.
Код AS3:

                public function test() {
                        var xml:XML = new SomeXML();
                        var xmlNodes:XMLList = xml.newsBlock;
                        var i:int = xmlNodes.length();
                        while (i--) {
                                var clip:MovieClip = new SomeClip();
                                var textField:TextField = clip.getChildByName("someTextField") as TextField;
                                textField.text = xmlNodes[i].toString();
                                clip.x = 100 * i;
                                addChild(clip);
                        }
                }


i.o. 10.04.2011 22:19

Main.as:
Код AS3:

package 
{
        import flash.display.MovieClip;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.net.URLLoader;
        import flash.net.URLLoaderDataFormat;
        import flash.net.URLRequest;
        import flash.text.TextField;
 
        public class Main extends Sprite
        {
                public function Main()
                {
                        var urlLoader:URLLoader = new URLLoader(new URLRequest("news.xml"));
                        urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
                        urlLoader.addEventListener(Event.COMPLETE, _onXmlLoaded)
                }
 
                private function _onXmlLoaded(e:Event):void
                {
                        var xml:XML = new XML((e.target as URLLoader).data);
 
                        _buildTextFiels( xml.news.newsBlock );
                }
 
                private function _buildTextFiels( newsBlocks:XMLList ):void
                {
                        var i:int = -1;
                        var l:int = newsBlocks.length();
                        while( ++i < l )
                        {
                                var txtNews:TextField = new TextField();
                                txtNews.width = 400;
                                txtNews.height = 40;
                                txtNews.border = true;
                                txtNews.text = newsBlocks[i];
 
                                var mcNewsContainer:MovieClip = new MovieClip();
                                mcNewsContainer.x = 10;
                                mcNewsContainer.y = 10 + 50 * i;
                                mcNewsContainer.addChild( txtNews );
 
                                this.addChild( mcNewsContainer );
                        }
                }
        }
}

news.xml:
Код:

<?xml version="1.0" encoding="utf-8" ?>
<data>
        <news>
                <newsBlock>Новостной блок номер 1</newsBlock>
                <newsBlock>Новостной блок номер 2</newsBlock>
                <newsBlock>Новостной блок номер 3</newsBlock>
        </news>
</data>


Likoniko 11.04.2011 08:40

всем спасибо

Добавлено через 24 минуты
как только добавить свой мувиклип?

Добавлено через 11 часов 44 минуты
помогите вставить свой мувиклип


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

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