AS3, как правильно сделать переменную доступной для дочернего класса / объекта - PullRequest
0 голосов
/ 04 марта 2011

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

В этом случае Blob должен иметь возможность доступа к шкале?

    public class Parent 
    {
        protected var scale:int = 32;

        public function Parent()
        {
             var shape = new Blob(15, 55);
        }
    }

-

public class Blob 
{
    private var _xp:int
    private var _yp:int

    private var _worldX:int;
    private var _worldY:int;

    public function Blob(x:int, y:int) 
    {
        _xp = x;
        _yp = y;

        _worldX = _xp * scale;
        _worldY = _yp * scale;
    }

    public function get worldX():int {
        return _worldX;
    }

}

Ответы [ 2 ]

1 голос
/ 04 марта 2011

Не совсем понятно, чего вы хотите достичь.В вашем примере вам, вероятно, нужно передать ссылку на родительский объект в конструкторе Blob и сделать масштабирование общедоступным.Вы можете избежать передачи ссылки, если оба Blob и Parent находятся в списке отображения, а Parent содержит Blob (то есть Blob является некоторым потомком DisplayObject, а Parent является DisplayObjectContainer).Таким образом, вы можете использовать родительское свойство DisplayObject для перехода к Parent.

public class Parent 
{
    public var scale:int = 32;

    public function Parent()
    {
         var shape = new Blob(15, 55, this);
    }
}

-

public class Blob {
private var _xp:int
private var _yp:int

private var _worldX:int;
private var _worldY:int;

private var _parent:Parent;

public function Blob(x:int, y:int, parent:Parent) 
{
    _xp = x;
    _yp = y;
    _parent = parent;

    _worldX = _xp * parent.scale;
    _worldY = _yp * parent.scale;
}

public function get worldX():int {
    return _worldX;
}}
1 голос
/ 04 марта 2011

Ключевое слово extends - это то, что вы ищете.

public class Blob extends Parent{
    /* This class is now a subclass of Parent */
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...