Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.10.2009, 02:37
Dmitry Y вне форума Посмотреть профиль Отправить личное сообщение для Dmitry Y Посетить домашнюю страницу Dmitry Y Найти все сообщения от Dmitry Y
  № 1  
Ответить с цитированием
Dmitry Y

Регистрация: Feb 2001
Сообщений: 151
По умолчанию Как из класса добраться до "_root"-а?

Только начинаю переходить на AS3 и вот какой вопрос, наверное детский.
На сцене, в "_root"-е (специально пишу с "_", пока мне так яснее) ecть текстовое поле txt.
Класс документа A:
Код AS3:
package {
  import flash.display.MovieClip;
  import flash.text.TextField;
  public class A extends MovieClip {
    function A() {
      txt.text = 'aaa';
    }
  }
}
Так работает, "aaa" в текстовом поле.

А если делаю другой класс В:
Код AS3:
package {
  import flash.display.MovieClip;
  import flash.text.TextField;
  public class B extends MovieClip {
    function B() {
      txt.text = 'aaa';
    }
  }
}
и вызываю его из A:
Код AS3:
package {
  import flash.display.MovieClip;
  import flash.text.TextField;
  public class A extends MovieClip {
    function A() {
      var b:B = new B();
    }
  }
}
не работает, ошибка: "1120: Access of undefined property txt"

Как правильно это делать, обращаться к чему-либо на главной временной диаграмме (или еще где-то) из таких вот последовательно вызванных классов?

Старый 16.10.2009, 07:23
MrPoma вне форума Посмотреть профиль Отправить личное сообщение для MrPoma Посетить домашнюю страницу MrPoma Найти все сообщения от MrPoma
  № 2  
Ответить с цитированием
MrPoma
 
Аватар для MrPoma

Регистрация: Jul 2006
Адрес: Питер
Сообщений: 2,083
Отправить сообщение для MrPoma с помощью Skype™
Вы класс к символу в библиотеке прикрипляете, я так полагаю. В таком случае нужно у символа, на который вы вешаете класс B, создать текстовое поле с инстенс неймом txt. Сначала надо объявить переменную, потом обращаться.
__________________
жж | твттр | гглплс | фсбк | вкнткт | гтхб

Старый 16.10.2009, 15:31
me2 вне форума Посмотреть профиль Отправить личное сообщение для me2 Найти все сообщения от me2
  № 3  
Ответить с цитированием
me2

Регистрация: Jan 2008
Сообщений: 84
рут в твоём понимании будет stage.getChildAt(0)...
тоесть обратиться к текстовому полю нужно примерно так:
var tipaRoot=stage.getChildAt(0);
tipaRoot.txt.text='tralala'; или tipaRoot.getChildByName('txt').text='tralala';

Старый 16.10.2009, 16:15
Dmitry Y вне форума Посмотреть профиль Отправить личное сообщение для Dmitry Y Посетить домашнюю страницу Dmitry Y Найти все сообщения от Dmitry Y
  № 4  
Ответить с цитированием
Dmitry Y

Регистрация: Feb 2001
Сообщений: 151
MrPoma, у меня пока в библиотеки для этого ничего нет. И, в общем-то, хотел обойтись без этого: просто класс, который пишет слова в текстовые поля из словаря.
Но все равно спасибо.

me2, спасибо. Ваш вариант как-то подтолкнул к нужному решению.

В результате сделал так:

Код AS3:
//Класс A (класс документа, т.е. и есть "_root"):
 
package {
  import flash.display.MovieClip;
  import flash.text.TextField;
 
  public class A extends MovieClip {
    function A() {
    	var b:B = new B(this);
    }
  }
}
 
//Класс B:
 
package {
  import flash.display.MovieClip;
  import flash.text.TextField;
  public class B extends MovieClip {
    function B(where) {
      where.txt.text = 'bbb';
    }
  }
}
Кажется, такой вариант более гибкий.

Спасибо всем!


Последний раз редактировалось Dmitry Y; 16.10.2009 в 16:26.
Старый 16.10.2009, 20:48
MrPoma вне форума Посмотреть профиль Отправить личное сообщение для MrPoma Посетить домашнюю страницу MrPoma Найти все сообщения от MrPoma
  № 5  
Ответить с цитированием
MrPoma
 
Аватар для MrPoma

Регистрация: Jul 2006
Адрес: Питер
Сообщений: 2,083
Отправить сообщение для MrPoma с помощью Skype™
А зачем мильён ненужных экземпляров? Может лучше сделать статичным?
__________________
жж | твттр | гглплс | фсбк | вкнткт | гтхб

Старый 16.10.2009, 21:23
Dmitry Y вне форума Посмотреть профиль Отправить личное сообщение для Dmitry Y Посетить домашнюю страницу Dmitry Y Найти все сообщения от Dmitry Y
  № 6  
Ответить с цитированием
Dmitry Y

Регистрация: Feb 2001
Сообщений: 151
Сделать статичным текст? Будет неудобно.
Предполагаются локализованные версии: русский, английский, испанский и т. д. Теоретически можно добавить потом и др. языки.
Здесь, для примера, упрощенный вариант, конечно.
На самом деле в классе В буду 1 раз пробегать по XML и распихивать слова куда надо, в поля, в переменные.

Старый 17.10.2009, 01:22
MrPoma вне форума Посмотреть профиль Отправить личное сообщение для MrPoma Посетить домашнюю страницу MrPoma Найти все сообщения от MrPoma
  № 7  
Ответить с цитированием
MrPoma
 
Аватар для MrPoma

Регистрация: Jul 2006
Адрес: Питер
Сообщений: 2,083
Отправить сообщение для MrPoma с помощью Skype™
Не статичный текст, а класс со статичным методом.
__________________
жж | твттр | гглплс | фсбк | вкнткт | гтхб

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:41.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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