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

Nickolai 20.11.2012 22:51

Обращение к объектам
 
Всем привет. Изивяюсь за очередной ламерский вопрос... Есть такая ситуация. У меня есть в адобе символ Main у символа настроен класс: MainComponent, базовый класс: flash.display.Sprite. В этом символе есть кнопка b_page, класса у кнопки нет. В самом симоле(кнопки) есть еще текстовое поле(text). Как мне обратиться к этому текстовому полю скажем написать в нем какой либо текст? Буду очень признателен, уже очень долго мучаюсь))

AlexCooper 20.11.2012 22:59

примерно так
Код AS3:

package  {
 
        import flash.display.Sprite;
        import flash.events.Event;
        import MainComponent;
 
        public class main extends Sprite {
 
                private var b_page:MainComponent = new MainComponent(); // вариант1 программное добавление
                private var b_page:MainComponent; // вариант2 если объект уже размещен на сцене
 
                public function main ():void {
                        addEventListener(Event.ADDED_TO_STAGE, init);
 
                }
 
                private function init($e:Event):void {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        interface();
                }
 
                private function interface():void {
                        addChild(b_page); // только если используем вариант1
 
                        b_page.text.text = "Текст";
                }
        }
}

Добавлено через 14 минут
есть конечно еще криворукий вариант
Код AS3:

        var target_mc = this;
        for (var i:uint = 0; i < target_mc.numChildren; i++)
                if (target_mc.getChildAt(i).name =='b_page') target_mc.getChildAt(i).text.text = 'текст';


Nickolai 20.11.2012 23:27

Я так и делал. Выводит: TypeError: Error #1010:
Код AS3:

Термин не определен и не имеет свойств.
        at Main/interfaces()
        at Main/init()
        at flash.display::DisplayObjectContainer/addChild()
        at Preloader/startup()
        at Preloader/checkFrame()
И так всегда...


AlexCooper 20.11.2012 23:42

проверьте что б папке где лежит main.as был файл MainComponent.as
Код AS3:

package  {
 
        import flash.display.Sprite;
        import flash.events.Event;
        import MainComponent;
 
        public class main extends Sprite {
 
                private var b_page:MainComponent = new MainComponent(); // вариант1 программное добавление
 
                public function main ():void {
                        addEventListener(Event.ADDED_TO_STAGE, init);
 
                }
 
                private function init($e:Event):void {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        interface();
                }
 
                private function interface():void {
                        addChild(b_page);
 
                        b_page.text.text = "Текст";
                }
        }
}

Добавлено через 2 минуты
выгрузите исходники

Nickolai 20.11.2012 23:48

MainComponent.as у меня такого нет, у меня все в swc и добавлено в библиотеку.

AlexCooper 20.11.2012 23:56

тогда у вас очевидно проблема с импортом

Nickolai 21.11.2012 00:04

http://cs417122.userapi.com/v4171221...We6FgbRzWA.jpg

http://cs417122.userapi.com/v4171221...gcqrc36IzY.jpg

http://cs417122.userapi.com/v4171221...b5FvKhIar0.jpg

Посмотрите фото качество плоховато, но тут все понятно и так.

AlexCooper 21.11.2012 00:12

не мудрено что у вас не работает.

Nickolai 21.11.2012 00:13

Почему?

AlexCooper 21.11.2012 00:16

давайте разберемся. В Main'e мы объявляем переменную b_page как экземпляр класса MainComponent, в MainComponent мы объявляем переменную b_page1 как экземпляр класса b_page. Теперь у нас есть вся цепочка. b_page.b_page1.text1.text = 'text';

Добавлено через 2 минуты
плюс то что вы вызываете у себя в скрине конструктор класса. Добавьте функцию my_func в класс b_page и в мейне вызывайте её.

Добавлено через 5 минут
плюс не используйте переменные с именами классов.


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

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