Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как вывести данные из класса в TextField (http://www.flasher.ru/forum/showthread.php?t=139049)

Евгени4 22.04.2010 12:03

Как вывести данные из класса в TextField
 
Есть несколько классов, по мере надобности один обращается к другому и передаёт параметры, возможно ли как то из последнего класса вывести данные в TextField который распологается на сцене, или нужно обязательно вернуть данные в Main?
И если вернуть, то как это лучше делать?

пример:
Код AS3:

package main {
 
        import flash.display.MovieClip;
 
        public class Main extends MovieClip {
                //делаем обращение new XMLLoader();       
        }
 
}

Код AS3:

package main {
 
        public class XMLLoader {
                //поймали записали
                //делаем обращение new XMLParser(xml_data);
        }
 
}

Код AS3:

package main {
 
        public class XMLParser {
                //произвели парсинг (отделили катлеты от мух)
                //обратились на выбор из N возможных К new TYPETest(dot, author);
        }
 
}

Код AS3:

package main {
 
        public class TYPETest {
                //сформировали ответ
                //вывели в "output_txt.text" как сделать????
        }
 
}


Obi 22.04.2010 12:09

Код AS3:

public class TYPETest {
        //сформировали ответ
        //вывели в "output_txt.text" как сделать????
 
        public function typeText(targetTextField:TextField, text:String):void {
            targetTextField.text = text;
        }
}


CrazyFlasher 22.04.2010 12:14

dispatchEvent

Евгени4 22.04.2010 12:21

2 Obi
Цитата:

Сообщение от Obi (Сообщение 902400)
Код AS3:

public class TYPETest {
        //сформировали ответ
        //вывели в "output_txt.text" как сделать????
 
        public function typeText(targetTextField:TextField, text:String):void {
            targetTextField.text = text;
        }
}


Не совсем понимаю что вы мне этим пытаетесь сказать?
Что я должен передать в targetTextField, чтоб мне был доступ к TextField на сцене?

2 CrazyFlasher
Это нужно повесить событие в Main, и ждать его, я правильно понимаю?

CrazyFlasher 22.04.2010 12:34

нужно повесить слушателя в Main и потом из TYPETest диспатчить событие, например с bubbles = true

Евгени4 27.04.2010 00:33

Не получается диспатчить подскажите что не так делаю.
Код AS3:

package main {
 
        import flash.display.MovieClip;
        import flash.events.Event;
 
        public class Main extends MovieClip {
                var dispatch:TYPETest = new TYPETest();
                dispatch.addEventListener(TYPETest.ACTION, textOutput);
 
                //делаем обращение new XMLLoader();       
        }
 
        public function textOutput(e:Event):void {
                trace("Принято!");
        }
 
}

Код AS3:

package main {
 
        public class XMLLoader {
                //поймали записали
                //делаем обращение new XMLParser(xml_data);
        }
 
}

Код AS3:

package main {
 
        public class XMLParser {
                //произвели парсинг (отделили катлеты от мух)
                //обратились на выбор из N возможных К new TYPETest();
                //с запросом OutTYPETest(dot, author);
        }
 
}

Код AS3:

package main {
        import flash.text.*;
        import flash.events.Event;
        import flash.events.EventDispatcher;
 
        public class TYPETest  extends EventDispatcher {
                public static var ACTION:String = "TypeTest";
 
                public function OutTYPETest(dot:String, author:String):void {
                        //сформировали ответ
                        dispatchEvent(new Event(TYPETest.ACTION, true)); //не проходит =(
                }
        }
 
}


derhab 27.04.2010 00:47

наскоко я понимаю, пузырьковые события только для экранных объектов, а у вас наследник EventDispatcher-а пытается его слать..

mikhailk 27.04.2010 00:53

Вывод на экран не обязателен, но без addChild пузыри подниматься не будут.

Кстати, у меня вопрос.
Этот зоопарк классов просто из любви к ООП? :)

Может просто заключить эти четыре функции в один класс да и пользоваться его переменными?

derhab 27.04.2010 01:03

Цитата:

Сообщение от mikhailk (Сообщение 903896)
Вывод на экран не обязателен, но без addChild пузыри подниматься не будут.

ну я как бы о том же...
проще всего при создании экземпляра TYPETest передать в конструктор ссылку на Main и диспатчить событие напрямую

Евгени4 27.04.2010 01:08

Цитата:

Сообщение от derhab (Сообщение 903893)
наскоко я понимаю, пузырьковые события только для экранных объектов, а у вас наследник EventDispatcher-а пытается его слать..

А если:
Код AS3:

dispatchEvent(new Event(TYPETest.ACTION, false)); //не проходит =(

то всеравно не проходит.
Сильно не пинайте, но я пока изучаю AS3. :)

Цитата:

Сообщение от mikhailk (Сообщение 903896)
Вывод на экран не обязателен, но без addChild пузыри подниматься не будут.

Кстати, у меня вопрос.
Этот зоопарк классов просто из любви к ООП? :)

Может просто заключить эти четыре функции в один класс да и пользоваться его переменными?

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

Цитата:

Сообщение от derhab (Сообщение 903901)
ну я как бы о том же...
проще всего при создании экземпляра TYPETest передать в конструктор ссылку на Main и диспатчить событие напрямую

А можно чуть подробнее, или небольшой пример?


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

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