Форум 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=123872)

Summer_sun 14.04.2009 18:00

Есть объект, а нужна строка
 
Вложений: 1
Здравствуйте уважаемые Флешеры!
Делаю вот бегущую строку. У меня есть файл 1.fla где расположена графика, и основной класс его TextAnimation

Код класса TextAnimation
Код AS3:

package {
        import flash.display.*;
        import flash.text.*;
        import flash.events.*;
        public class TextAnimation extends Sprite {
                private var t:TextField;
                private var textFormat:TextFormat;
                private var tText:getXML;
 
                public function TextAnimation() {
 
 
 
                        t=new TextField();
                        tText = new getXML();
 
                        t.text="Привет всем посетителям нашего сайта!";
                        t.autoSize=TextFieldAutoSize.LEFT;
                        t.x=500;
 
                        textFormat = new TextFormat();
                        textFormat.bold=true;
                        textFormat.color=0xFF0000;
                        textFormat.font="Arial";
                        textFormat.size=14;
                        t.setTextFormat(textFormat);
                        addChild(t);
 
                        var square:Sprite = new Sprite();
                        square.graphics.beginFill(0xFF0000);
                        square.graphics.drawRect(4, 2, 525, 20);
                        addChild(square);
 
                        t.mask=square;
 
 
                        addEventListener(Event.ENTER_FRAME, moveTextRight);
 
 
                }
                public function moveTextRight(e:Event):void {
                        t.x-=1;
                        if (t.x+t.textWidth<0) {
                                t.x=t.textWidth+500;
                        }
 
                }
        }
}

Текст строки должен получаться из xml файла. Для этого у меня есть вспомогательный класс getXML
Код AS3:

package {
        import flash.xml.*;
        import flash.display.*;
        import flash.events.*;
        import flash.net.*;
 
 
 
 
        public class getXML extends Sprite {
                private var xmlLoader:URLLoader=new URLLoader(new URLRequest("intelcity.xml"));
                private var xmlData:XML;
                private var xmlList:XMLList;
                public var t_str:String;
                public function getXML() {
                        xmlLoader.addEventListener(Event.COMPLETE, newXML);
 
                        function newXML(e:Event):void {
                                xmlData=XML(e.target.data);
                                xmlList=xmlData.children();
                                t_str=xmlList[0];
 
 
                        }
                }
        }
}

На данном этапе текстом строки служит фраза введенная в коде класса TextAnimation. А вот как сделать тектом бегущей строки полученную строку из xml файла я не понимаю. У меня выходит объект класса getXML, как получить из него текст?

r_r_f_r 14.04.2009 18:08

Не запускал, но примерно так:

Код AS3:

 
package {
        import flash.display.*;
        import flash.text.*;
        import flash.events.*;
        public class TextAnimation extends Sprite {
                private var t:TextField;
                private var textFormat:TextFormat;
                private var tText:getXML;
 
                public function TextAnimation() {
 
 
 
                        t=new TextField();
                        tText = new getXML();
                        tText.addEventListener('XMLReady',onXMLREady);
 
                        t.text="Привет всем посетителям нашего сайта!";
                        t.autoSize=TextFieldAutoSize.LEFT;
                        t.x=500;
 
                        textFormat = new TextFormat();
                        textFormat.bold=true;
                        textFormat.color=0xFF0000;
                        textFormat.font="Arial";
                        textFormat.size=14;
                        t.setTextFormat(textFormat);
                        addChild(t);
 
                        var square:Sprite = new Sprite();
                        square.graphics.beginFill(0xFF0000);
                        square.graphics.drawRect(4, 2, 525, 20);
                        addChild(square);
 
                        t.mask=square;
 
 
                        addEventListener(Event.ENTER_FRAME, moveTextRight);
 
 
                }
 
                private function onXMLREady(e:Event):void
                {
                        t.text = tText.t_str;
                }
 
                public function moveTextRight(e:Event):void {
                        t.x-=1;
                        if (t.x+t.textWidth<0) {
                                t.x=t.textWidth+500;
                        }
 
                }
        }
}

и

Код AS3:

package {
        import flash.events.Event;
        import flash.events.EventDispatcher;
        import flash.net.URLLoader;
        import flash.net.URLRequest;
 
        public class getXML extends EventDispatcher
        {
                private var xmlLoader:URLLoader=new URLLoader(new URLRequest("intelcity.xml"));
                private var xmlData:XML;
                private var xmlList:XMLList;
                public var t_str:String;
 
                public function getXML()
                {
                        xmlLoader.addEventListener(Event.COMPLETE, newXML);
                }
 
                private function newXML(e:Event):void
                {
                        xmlData=XML(e.target.data);
                        xmlList=xmlData.children();
                        t_str=xmlList[0];
 
 
                        var ev:Event = new Event('XMLReady');
                        dispatchEvent(ev);
                }
        }
}


Summer_sun 15.04.2009 11:56

да, получается, спасибо. В функции onXMLREady добавила еще
Код AS3:

t.setTextFormat(textFormat);



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

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