![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2008
Сообщений: 5
|
есть: класс1 с переменными имя1, имя2, ... ; и такие же глобальные (т.е., объявленные в document.class)
вопрос: можно ли, и если можно - как, в функциях класса1 присвоить внутренним переменным значения внешних и наоборот. аналог на с++ - name1=::name1; не тыкайте в поиск, я забыл, как это называется словами... ![]() да и еще, хотелось бы почитать что-нибудь более-менее полное об областях видимости в АС3, если можно урл. |
|
|||||
|
strange mood
|
область видимости aka namespace
http://flasher.ru/forum/showpost.php...4&postcount=49 http://flasher.ru/forum/showpost.php...0&postcount=50
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 5
|
GAIKER, спасибо.
насколько я понимаю, умалчиваемого пространства имен у классов нет и задавать его нужно только явно namespace'ом? *EDIT* хочу еще про область видимости. потому как объявленный в док.класс неймспейс в упор не видится другими классами... Последний раз редактировалось ctsl; 22.02.2008 в 12:32. |
|
|||||
|
strange mood
|
Насколько я сам понял из того, что там написано, пространства имён можно создавать внутри класса.
А вообще экземпляр класса документа достаётся из любого дочернего мувика по свойству root. Т.е. this.root.someVar=this.someVar. Хотя я бы не рекомендовал так делать, ибо возникают те же проблемы что и при использовании глобальных переменных. Лучше написать и вызвать некий метод инициализации, который принимает нужные значения в качестве параметров и выставляет у экземпляра. А если нужно что-то типа места для хранения всяких констант, например таких настроек как урл файла с данными, адреса серверных скриптов итд, то лучше создать отдельный класс и объявлять в нём значения как public static const someVar='fgsfds'; package{
public class Config{
static const STAGE_WIDTH :Number = 700;
static const STAGE_HEIGHT :Number = 750;
static const FADE_TIME :Number = 0.3;
}//end of Config
}//package
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
|
|
|||||
|
Регистрация: Feb 2008
Сообщений: 5
|
отлично, неймспейсы идут далеко и надолго - используем обращение к классу через точку.
main.as (он же document class) package cards
{
import flash.display.MovieClip;
public class main extends MovieClip
{
public var iTop:int=0;
выдает: 1119: Access of possibly undefined property iTop through a reference with static type Class. *EDIT* хм, this.myVariable пишется не внутри MyClass? Последний раз редактировалось ctsl; 22.02.2008 в 13:07. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Почему у вас имена классов начинаются с маленькой буквы? Вы где-нибудь во флешовом фреймворке видели классы с именами с маленькой буквы?
this.myVariable пишется внутри класса MyClass, где this.myVariable есть поле класса, а MyClass.myVariable есть статическое поле этого же класса. То, что вы пытаетесь сделать, я не знаю. |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 5
|
маленькие буквы пофиксил.
Цитата:
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
package {
public class MyClass {
public function MyClass() {
super();
trace('before',this.myVariable);
this.myVariable = AnotherClass.myVariable;
trace('after',this.myVariable);
}
public var myVariable:String = 'MyClass';
}
}
|
|
|||||
|
Регистрация: Feb 2008
Сообщений: 5
|
немного поэкспериментировав со статиком, пришел к выводу, что никакой он не статик (по крайней мере, в сишном смысле), что меня вполне устраивает.
все работает, __etc спасибо |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:03. |
|
|
« Предыдущая тема | Следующая тема » |
|
|