Управление объектами другого класса, которые уже находятся на сцене - PullRequest
0 голосов
/ 03 марта 2011

Мне очень стыдно задавать этот вопрос здесь, потому что я уверен, что мне не хватает чего-то очень простого. Я даже не уверен, какой должен быть правильный заголовок для этого вопроса.

Допустим, у меня есть объект кнопки (экземпляр Flip) и объект монеты (экземпляр Coin) на сцене. Монетный объект имеет два кадра: один показывает головы, а другой - хвосты.

Класс MyCoin выглядит следующим образом:

package
{
    import flash.display.MovieClip;

    public class Coin extends MovieClip
    {
        protected var _coinFace:uint;

        public function Coin()
        {
            stop();
        }

        public function get coinFace():uint {
            return _coinFace;
        }

        public function set coinFace(value:uint):void {
            _coinFace = value;
        }

        public function show():void {
            gotoAndStop(_coinFace);
        }
    }
}

Цель: когда пользователь нажимает кнопку, монета должна перевернуться и показать случайную монету. Я добавил eventListener в класс Flip следующим образом:

public function Flip()
    {
        this.addEventListener(MouseEvent.CLICK, onMouseClick);
    }

Проблема: Как мне добраться до объекта монеты на экране с помощью функции onMouseClick? Допустим, у объекта на сцене есть имя экземпляра myCoin. Я полагаю, что если бы я не сделал это с внешним классом и просто использовал действия из фрейма, я мог бы просто использовать имя экземпляра в качестве переменной. Я не мог придумать, чтобы сделать то же самое во внешнем классе. Сначала создать объект, который уже находится на сцене?

1 Ответ

3 голосов
/ 03 марта 2011

Когда вы создаете экземпляр каждого, перевернутому объекту необходимо передать экземпляр объекта монеты.

var myCoin:Coin = new Coin();
var myFlip:Flip = new Flip(myCoin);

Тогда внутри класса Flip:

private var _coin:Coin;
public function Flip(coin:Coin) {
    _coin = coin;
    this.addEventListener(MouseEvent.CLICK, onMouseClick);
}

private function onMouseClick(e:MouseEvent):void {
    _coin.gotoAndStop(2); // Or what ever needs to be done to the coin on click
}

В качестве альтернативы, в зависимости от сложности общей структуры, вы можете создать управляющий класс, который действует как связь между ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...