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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.04.2013, 10:26
Srednas вне форума Посмотреть профиль Отправить личное сообщение для Srednas Найти все сообщения от Srednas
  № 1  
Ответить с цитированием
Srednas

Регистрация: Nov 2010
Сообщений: 430
Question Обращение к свойству класса

Здравствуйте.
Подскажите, как можно сделать следующее.
Допустим, есть класс, который содержит в себе две переменные.
Код AS3:
public class Main
{
		public var tf:TextField = new TextField();
		public var sp:Sprite = new Sprite();
...
Затем добавляем выбираем несколько экземпляров класса Main, и добавляем на сцену некоторые TextField и Sprite. К примеру, слева список, справа графика.
Вопрос: можно ли как-нибудь обращаться к «родному» спрайту при клике по текстФилду или наоборот, при клике на спрайте, получить нужный текстФилд?
__________________
Лучше спросить и выставить себя дураком на пять минут, чем не спросить и остаться дураком на всю жизнь.

Старый 22.04.2013, 10:50
bav вне форума Посмотреть профиль Отправить личное сообщение для bav Найти все сообщения от bav
  № 2  
Ответить с цитированием
bav
 
Аватар для bav

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Можно воспользоваться классом Dictionary. Например, добавить в класс Main статический словарь и в конструкторе добавлять в него ссылки на текстовое поле и спрайт по соответствующим ключам.
Код AS3:
// Вот оно хранилище ссылок
public static var dict:Dictionary = new Dictionary();
// Вот он конструктор
public function Main() {
  ...
  tf = new TextField();
  sp = new Sprite();
  dict[ tf ] = sp;
  dict[ sp ] = tf;
  ...
}
После этого можно будет в обработчике события клика, достать e.currentTarget, привести его к Sprite (если кликнули по спрайту) и сделать так:
Код AS3:
var sp:Sprite = e.currentTarget as Sprite;
if (sp) {
  var tf:TextField = Main.dict[ sp ] as TextField;
  if (tf)
    // do something
}
И наоборот.

Старый 22.04.2013, 14:44
chamele0n вне форума Посмотреть профиль Отправить личное сообщение для chamele0n Посетить домашнюю страницу chamele0n Найти все сообщения от chamele0n
  № 3  
Ответить с цитированием
chamele0n
[+4 24.04.13]
[+4 20.04.13]

Регистрация: Feb 2013
Адрес: Seireitei
Сообщений: 176
да ну бред какойто, зачем тебе класс если у тебя все переменые обьявлены публично и как ты их добовляешь на сцену непонятно
наверно ты имеешь ввиду следующее
Код AS3:
package  {
 
	import flash.display.MovieClip;
	import flash.text.TextField;
	import flash.display.Sprite;
	import flash.events.MouseEvent;
 
 
	public class Main extends MovieClip {
 
		private var tf:TextField;
		private var sprite:Sprite;
 
		public function Main() {
			tf = new TextField();
			tf.addEventListener(MouseEvent.CLICK, onTextFieldClick);
			addChild(tf);
 
			sprite = new Sprite();
			sprite.addEventListener(MouseEvent.CLICK, onSpriteClick);
			addChild(sprite);
		}
 
		protected function onTextFieldClick(e:MouseEvent) : void {
			//например
			sprite.x += 100;
		}
 
		protected function onSpriteClick(e:MouseEvent) : void {
			//например
			tf.x += 100;
		}
 
	}
 
}
ну и сооветственно создаем экземплятор

Код AS3:
var main:Main = new Main();
addChild(main);
__________________
Personal Page
$demo = $away3d + $bullet + $pathfinding;

Старый 22.04.2013, 19:48
bav вне форума Посмотреть профиль Отправить личное сообщение для bav Найти все сообщения от bav
  № 4  
Ответить с цитированием
bav
 
Аватар для bav

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Нажмите на изображение для увеличения
Название: terminatr1poster_1.jpg
Просмотров: 108
Размер:	118.5 Кб
ID:	29438

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

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

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


 


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


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