Просмотр полной версии : Передача значений из класса в класс.
Всем привет. столкнулся с проблемой не получается присвоить значение одной переменной, к переменной другого класса.
Вот как обстоят дела.
//Создаю переменную
map:startMap;
//Создаю экземпляр класса
map = new startMap();
//Присваиваю значение к переменной из класса startMap
map.halfLength = 30;
//Добавляю в отображение
addChild(map);
//В классе startMap трейсов проверяю переменную halfLength, а она равна 0 в чем проблема? Почему так происходит?
Спасибо! ;)
Переменная объявляется с помощью ключевого слова var:
var map:startMap;
Покажите класс startMap или то место в нем, где вы трейсите halfLength.
var map:startMap;
map = new startMap();
map.halfLength = 30;
// Вот этот трейс что выдает?
trace(map.halfLength);
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
var map:startMap;
map = new startMap();// - 1. вызвался конструктор, в котором переменная halfLength все ещё равна нулю
map.halfLength = 30;// - 2. присвоили значение переменной halfLength.
Что вам не понятно?
Не понятно то что в конструкторе startMap тейс halfLength показывает 0 а не 30
Потомучто сначала отрабатывает конструктор, а только потом вы присваиваете значение переменной, а не наоборот.
это получается надо вот так запускать?
var map:startMap;
map.halfLength = 30; //показывает ошибку
map = new startMap();
в классе startMap проверял halfLength за приделами конструктора показывает тоже 0
Если вам нужно чтобы в конструкторе 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);
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.