Просмотр полной версии : Обращение к свойству класса
Здравствуйте.
Подскажите, как можно сделать следующее.
Допустим, есть класс, который содержит в себе две переменные.
public class Main
{
public var tf:TextField = new TextField();
public var sp:Sprite = new Sprite();
...
Затем добавляем выбираем несколько экземпляров класса Main, и добавляем на сцену некоторые TextField и Sprite. К примеру, слева список, справа графика.
Вопрос: можно ли как-нибудь обращаться к «родному» спрайту при клике по текстФилду или наоборот, при клике на спрайте, получить нужный текстФилд?
Можно воспользоваться классом Dictionary (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/utils/Dictionary.html). Например, добавить в класс Main статический словарь и в конструкторе добавлять в него ссылки на текстовое поле и спрайт по соответствующим ключам.
// Вот оно хранилище ссылок
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 (если кликнули по спрайту) и сделать так:
var sp:Sprite = e.currentTarget as Sprite;
if (sp) {
var tf:TextField = Main.dict[ sp ] as TextField;
if (tf)
// do something
}
И наоборот.
chamele0n
22.04.2013, 14:44
да ну бред какойто, зачем тебе класс если у тебя все переменые обьявлены публично и как ты их добовляешь на сцену непонятно
наверно ты имеешь ввиду следующее
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;
}
}
}
ну и сооветственно создаем экземплятор
var main:Main = new Main();
addChild(main);
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.