PDA

Просмотр полной версии : Отображение переменной в class,e


WinSTOP
07.04.2013, 21:05
Вообщем есть class - Tmain
package {
import flash.display.MovieClip;

public class Tmain extends MovieClip {

public var _main:Number = 5;

public function Tmain() {
}

}

}

1) как отобразить эту переменную на сцене? _main.text = _main (так не работает)
2) как изменить значение переменной из другого класса?

chamele0n
07.04.2013, 21:13
о господи )
Создаешь экземплятор класа и вперед

var m:Tmain = new Tmain();
trace(m._main); // 5
m._main++;
trace(m._main); // 6

WinSTOP
07.04.2013, 21:17
Да нет текст должен быть на сцене.

chamele0n
07.04.2013, 21:28
TextField тебе в помощь

WinSTOP
07.04.2013, 21:35
что не правильно?
package {
import flash.display.MovieClip;

public class Tmain extends MovieClip
{
public var _main:Number = 5;
public var _text:TextField = new TextField();
_text.text = _main;
public function Tmain()
{
_text.text = _main;
}

}

}

chamele0n
07.04.2013, 21:37
както так

package {
import flash.display.MovieClip;
import flash.text.TextField;
public class Tmain extends MovieClip
{
public var _main:Number = 5;
public var _text:TextField = new TextField();
public function Tmain()
{
addChild(_text);
_text.text = String(_main);
}

}

}

iflamberg
07.04.2013, 21:38
Ну, для начала, было бы не плохо добавить созданное текстовое поле в список отображения:
package {
import flash.display.MovieClip;

public class Tmain extends MovieClip
{
public var _main:Number = 5;
public var _text:TextField = new TextField();
public function Tmain()
{
_text.text = _main;
addChild (_text);
}

}

}
Если сам Tmain не является document class, то не забудьте добавить его самого на экран.

WinSTOP
07.04.2013, 21:44
огромное спасибо. я только понял о классах щас затрудняет вот это import flash.display.MovieClip
import flash.text.TextField; не знаю когда надо когда не надо писать. Мож совет дадите как определить что надо писать это.

iflamberg
07.04.2013, 21:54
Это указание компилятору, что, класс TextField нужно искать в пакете flash.display.TextField. А то, можент быть вы написали свой собвственный me.VasyaPupkin.TextField и хотите использовать его. Я об этом импорте забыл, мой код не должен компилироватся, по идее.
Писать его надо всегда. Компилятор вам подскажет если вы импорт забыли: дескать, не знаю я что это за класс, где его искать? Но если код в кадре пишется то некоторые импорты из стандартного набора можно опустить, компилятор "догадается". Но вы создали файл класса, здесь нельзя их не писать.

WinSTOP
07.04.2013, 21:59
iflamberg, спасибо) к стати так и не услышал про второй вопрос. как изменить переменную из другого класса?
вот как делаю я
public var m:Tmain = new Tmain();
m._main.Number = 0;
не работает.

caseyryan
07.04.2013, 22:05
Само собой не будет

m._main = 0;

А вообще, судя по вашим вопросам, вам надо Колина Мука читать. С самого начала.

WinSTOP
07.04.2013, 22:29
не работает =( ладно всем пока.

chamele0n
07.04.2013, 22:49
тебе не класы надо изучать, а сачало переменые
яж тебе написал

m._main++;
m._main = 0;

WinSTOP
08.04.2013, 06:02
как переменные изменять я знаю, но у меня другая задача изменить переменную в классе Tmain из класса Tclass!
Вот что выхожит если написать ваше.
Error: Error #2136: SWF-файл file:///F|/Flash/Flash%5Fgames/TGames/Tgames.swf содержит недопустимые данные.
at Tclass()
at flash.display::Sprite/constructChildren()
at flash.display::Sprite()
at flash.display::MovieClip()
at Tmain()

var m:Tmain = new Tmain();
m._main += 5;

Добавлено через 4 часа 17 минут
Всё ошибки исправил) Надо было переменную статической сделать static.