Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   работа с XML (http://www.flasher.ru/forum/showthread.php?t=136745)

Dr_Bra 24.02.2010 19:36

работа с XML
 
Друзья, у меня никак не получается сделать "умную загрузку" с помощью XML. Пытался из разных советов слепить что - то одно, но я плохой программист и ничего не вышло. Поэтому решил сделать все с нуля, ну и конечно надеюсь на вашу поддержку!

В лучшем случае, в конце этой темы у нас должно получиться небольшое приложение, полностью динамично подгружающее в себя информацию с помощью XML.
Как оно должно работать:
На сцене появляются 3 иконки, при клике на определенную иконку, должна подгружаться информация именно этой иконки по которой кликнули. Ну а информация должна заключаться в виде одной картинки и двух текстовых блокав, например, имя и биография.

Не судите строго :rtfm:, совсем недавно начал изучать as3

Добавлено через 2 минуты
а вот и первый вопрос
Код AS3:

package
{
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.net.URLRequest;
        import flash.net.URLLoader;
        import flash.net.URLLoaderDataFormat;
        import flash.display.StageAlign;
        import flash.display.StageScaleMode;
 
        public class SimpleUsingXML extends Sprite
        {
                public function SimpleUsingXML():void
                {
                        if (stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                        trace("SimpleUsingXML")//выводит
                }
                private function init(e:Event = null):void
 
                {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        stage.align = StageAlign.TOP_LEFT;
                        stage.scaleMode = StageScaleMode.NO_SCALE;
 
                        var xmlLoader:URLLoader=new URLLoader();
                        xmlLoader.dataFormat = URLLoaderDataFormat.TEXT;
                        xmlLoader.addEventListener(Event.COMPLETE, parseXML);
                        xmlLoader.load(new URLRequest("photo/userphotos.xml"));
                }
                private function parseXML(event:Event):void
                {
                        trace("parseXML")//не выводит
                }
        }
}

значит XML не загрузился?

metsys 24.02.2010 19:49

Привет. Вот мой работающий код. Может натолкнёт на мысли. По поводу твоей задачи в принципе представляю как это можно сделать. Сейчас убегаю. Так что если будут вопросы смогу помочь завтра, послезавтра. Сам знакомлюсь с XML сейчас.

Код AS3:

package {
        import flash.display.Loader;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.net.URLLoader;
        import flash.net.URLRequest;
        import flash.text.TextField;
 
        [SWF(width="1024", height="768", backgroundColor="#ffffff")]
        public class xmlProject extends Sprite
        {
                public var xmlLoader:URLLoader = new URLLoader();
                public var xmlList:XMLList;
                public var xmlData:XML;
 
                public function xmlProject()
                {
                        xmlLoader.addEventListener(Event.COMPLETE, showXML);
                        xmlLoader.load(new URLRequest("xml_file.xml"));
                }
 
                public function showXML(e:Event):void {
                        xmlData=new XML(e.target.data);
                        //xmlData.ignoreWhitespace=true;
                        xmlList=xmlData.children();
 
                        for (var i:int=0; i < xmlList.length(); i++) {
                                var picLoader:Loader=new Loader();
                                picLoader.load(new URLRequest(xmlList[i].attributes()[1]));
                                picLoader.x=20;
                                picLoader.y=i*160+20;
                                addChild(picLoader);
 
                                var stringVar:String=new String;
                                var textfieldVar:TextField=new TextField;
                                textfieldVar.multiline=true;
                                textfieldVar.selectable=true;
                                textfieldVar.x=400;
                                textfieldVar.y=picLoader.y;
                                addChild(textfieldVar);
                                stringVar=xmlList[i].children()[2];        //stringVar=xmlList[i].elements("body");
                                textfieldVar.text=stringVar;
                        }
                }
        }
}

текст XML:

Код:

<?xml version="1.0" encoding="utf-8"?>
<images>

        <img big="data/images/01.jpg" b="data/images/04.jpg">grrr 1
                <title>Картинка 1</title>
                <body>about 1</body>
        </img>

        <img big="data/images/02.jpg" b="data/images/05.jpg">grrr 2
                <title>Картинка 2</title>
                <body>about 2</body>
        </img>

        <img big="data/images/03.jpg" b="data/images/06.jpg">grrr 3
                <title>Картинка 3</title>
                <body>about 3</body>
        </img>

</images>


Gaen 24.02.2010 19:51

Подпишитесь на IOErrorEvent.IO_ERROR и SecurityErrorEvent.SECURITY_ERROR

Wolsh 24.02.2010 20:31

А где расположен файл photo/userphotos.xml по отношению к свф?
И перенеси первый трейс в init(), чтобы знать что вообще дошли до загрузки xml ))

Wolsh 24.02.2010 22:59

Вложений: 1
Вот тебе еще пример, на этот раз с фла))))

Dr_Bra 25.02.2010 13:25

Вложений: 1
спасибо, Wolsh!
На этой основе я пытаюсь построить загрузку разных иконок, для каждой персоны.
Иконки грузятся, только перестает правильно работать событие
Код AS3:

userIcon.addEventListener(MouseEvent.CLICK, onClick);

кликнуть на тексе - работает, на иконку - нет..
мы же и текст и иконку поместили в один контейнер userIcon..

Dr_Bra 25.02.2010 20:09

Вложений: 1
Вот уже более модифицированный код в нашем приложении. Только не получается решить проблему с кликом по иконке. И, вроде, контейнер с карточкой загружается поверх старого, не удаляя предыдущий, это же не правильно, как это поправить, с помощью уровней или есть более разумное решение?


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

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