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

Galleon 09.02.2008 03:41

Доступ к объектам в разных фреймах
 
Создал я Document class, добавил мувик в первый фрейм, всё отлично, доступ к нему из Document class есть по name.
Потом перешёл на следуйщий фрейм и добавил ещё один мувик, как получить к нему доступ с Document class ?

BlooDHounD 09.02.2008 12:13

точно так же как и в первом кадре.

Galleon 09.02.2008 13:52

BlooDHounD, нет не точно также.
Код:
Код:

package main{
        import flash.display.MovieClip;
        import flash.text.TextField;
        public class test1 extends MovieClip {
                public function test1() {
                        trace(tx);
                        tx.text = "Hello!";
                }
        }
}

Вывод:
Код:

null
TypeError: Error #1009: Cannot access a property or method of a null object reference.
        at main::test1$iinit()

Текстовое поле tx находится во втором фрейме мувика.

Я перетащил его из библиотеки на таймлайн во второй кадр. Неужели к нему нельзя получить доступ програмно?

etc 09.02.2008 14:10

А где у вас объявлена переменная-ссылка на TextField?
Для получения доступа к полю, надо перейти на второй кадр, если оно во втором кадре. А так вы пытаетесь выйти на втором этаже, не поднимаясь с первого на второй.
И ещё, кто вас так классы научил называть?

Galleon 09.02.2008 14:37

Цитата:

А где у вас объявлена переменная-ссылка на TextField
Во втором фрейме есть текстовое поле, в панеле Properties я задаю ему имя tx. Потом пытаюсь обратится к нему из класа Document class. Если текстовое поле находится в первом фрейме, то проблем нет, а во втором не неходит.
Цитата:

Для получения доступа к полю, надо перейти на второй кадр, если оно во втором кадре. А так вы пытаетесь выйти на втором этаже, не поднимаясь с первого на второй.
Вы имеете ввиду gotoAndStop(2)? А нелзя обратится как-то так: frame2.tx?
Цитата:

И ещё, кто вас так классы научил называть?
Переделаный пример Hello World с вашего форума))

BlooDHounD 09.02.2008 14:43

а у вас она существует до тех пор пока вы не перешли на второй кадр? у меня бы не существовала.

etc 09.02.2008 19:40

Цитата:

Сообщение от Galleon
Во втором фрейме есть текстовое поле, в панеле Properties я задаю ему имя tx.

Это за вас CS3 объявляет поля, что есть зло. Отключайте автоматическое объявление полей-ссылок на DisplayObject-ы, иначе при использовании любого нормального редактора AS3-кода, у вас сразу же посыпятся ошибки.

Цитата:

Сообщение от Galleon
Вы имеете ввиду gotoAndStop(2)? А нелзя обратится как-то так: frame2.tx?

Нельзя. Вы пытаетесь из одной комнаты достать вещь из другой, не входя в неё.

Цитата:

Сообщение от Galleon
Переделаный пример Hello World с вашего форума))

Значит его надо удалить.

Galleon 09.02.2008 21:01

__etc, спасибо!
Работает код:
Код:

package main{
        import flash.display.MovieClip;
        import flash.text.TextField;
        public class TestFrame extends MovieClip {
                public function TestFrame() {
                        this.gotoAndStop(2);
                        tx.text = "Hello!";
                }
        }
}

Цитата:

Это за вас CS3 объявляет поля, что есть зло. Отключайте автоматическое объявление полей-ссылок на DisplayObject-ы, иначе при использовании любого нормального редактора AS3-кода, у вас сразу же посыпятся ошибки.
А как иначе получить ссылку на DisplayObject ? Если я его добавлял не программно, а перетаскиванием из библиотеки на таймлайн?

BlooDHounD 09.02.2008 21:39

getChildByName

etc 10.02.2008 02:03

Цитата:

Сообщение от BlooDHounD
getChildByName

Либо отключить автоматическое объявление переменных и указать их самому. Но нельзя вообще не указывать, что есть минус для CS3.


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

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