PDA

Просмотр полной версии : Передача значений из класса в класс.


razerw
26.08.2012, 17:09
Всем привет. столкнулся с проблемой не получается присвоить значение одной переменной, к переменной другого класса.
Вот как обстоят дела.

//Создаю переменную
map:startMap;
//Создаю экземпляр класса
map = new startMap();
//Присваиваю значение к переменной из класса startMap
map.halfLength = 30;
//Добавляю в отображение
addChild(map);

//В классе startMap трейсов проверяю переменную halfLength, а она равна 0 в чем проблема? Почему так происходит?
Спасибо! ;)

bav
26.08.2012, 17:32
Переменная объявляется с помощью ключевого слова var:
var map:startMap;
Покажите класс startMap или то место в нем, где вы трейсите halfLength.

var map:startMap;
map = new startMap();
map.halfLength = 30;
// Вот этот трейс что выдает?
trace(map.halfLength);

razerw
26.08.2012, 18:22
public class startMap extends Sprite
{
private var _debugGrid:Bitmap;
//половина экрана
public var halfLength:int;
public var halfWidth:int;

public function startMap ():void
{
trace(halfLength);// 0
}


Добавлено через 1 минуту

var map:startMap;
map = new startMap();
map.halfLength = 30;
// Вот этот трейс что выдает?
trace(map.halfLength);// 30

Bgg
26.08.2012, 18:50
var map:startMap;
map = new startMap();// - 1. вызвался конструктор, в котором переменная halfLength все ещё равна нулю
map.halfLength = 30;// - 2. присвоили значение переменной halfLength.


Что вам не понятно?

razerw
26.08.2012, 19:03
Не понятно то что в конструкторе startMap тейс halfLength показывает 0 а не 30

Bgg
26.08.2012, 19:04
Потомучто сначала отрабатывает конструктор, а только потом вы присваиваете значение переменной, а не наоборот.

razerw
26.08.2012, 19:15
это получается надо вот так запускать?

var map:startMap;
map.halfLength = 30; //показывает ошибку
map = new startMap();

в классе startMap проверял halfLength за приделами конструктора показывает тоже 0

bav
26.08.2012, 19:46
Если вам нужно чтобы в конструкторе halfLength была равна 30, передавайте значение прямо в конструктор.

public class startMap extends Sprite
{
private var _debugGrid:Bitmap;
//половина экрана
public var halfLength:int;
public var halfWidth:int;

public function startMap (halfLength:int):void
{
this.halfLength = halfLength;
trace(this.halfLength);
}
}

И далее объект создается так:
var map:startMap = new startMap(30);

razerw
26.08.2012, 20:05
большое спасибо ;)