Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.02.2008, 11:27
ctsl вне форума Посмотреть профиль Отправить личное сообщение для ctsl Найти все сообщения от ctsl
  № 1  
Ответить с цитированием
ctsl
 
Аватар для ctsl

Регистрация: Feb 2008
Сообщений: 5
По умолчанию аналог :: в AS3

есть: класс1 с переменными имя1, имя2, ... ; и такие же глобальные (т.е., объявленные в document.class)
вопрос: можно ли, и если можно - как, в функциях класса1 присвоить внутренним переменным значения внешних и наоборот.
аналог на с++ - name1=::name1;
не тыкайте в поиск, я забыл, как это называется словами...
да и еще, хотелось бы почитать что-нибудь более-менее полное об областях видимости в АС3, если можно урл.

Старый 22.02.2008, 12:08
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 2  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
область видимости aka namespace
http://flasher.ru/forum/showpost.php...4&postcount=49
http://flasher.ru/forum/showpost.php...0&postcount=50
__________________
тонкий тролль, осеянный благодатью

Старый 22.02.2008, 12:22
ctsl вне форума Посмотреть профиль Отправить личное сообщение для ctsl Найти все сообщения от ctsl
  № 3  
Ответить с цитированием
ctsl
 
Аватар для ctsl

Регистрация: Feb 2008
Сообщений: 5
GAIKER, спасибо.
насколько я понимаю, умалчиваемого пространства имен у классов нет и задавать его нужно только явно namespace'ом?
*EDIT*
хочу еще про область видимости. потому как объявленный в док.класс неймспейс в упор не видится другими классами...


Последний раз редактировалось ctsl; 22.02.2008 в 12:32.
Старый 22.02.2008, 12:44
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 4  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Насколько я сам понял из того, что там написано, пространства имён можно создавать внутри класса.
А вообще экземпляр класса документа достаётся из любого дочернего мувика по свойству 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
Доступ можно соответственно можно получить вот так:
Код:
trace(Config.FADE_TIME);
__________________
тонкий тролль, осеянный благодатью

Старый 22.02.2008, 13:00
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
MyClass:
Код:
this.myVariable = MyClass.myVariable;

Старый 22.02.2008, 13:04
ctsl вне форума Посмотреть профиль Отправить личное сообщение для ctsl Найти все сообщения от ctsl
  № 6  
Ответить с цитированием
ctsl
 
Аватар для ctsl

Регистрация: Feb 2008
Сообщений: 5
отлично, неймспейсы идут далеко и надолго - используем обращение к классу через точку.

main.as (он же document class)
Код:
package cards
{ 
	import flash.display.MovieClip;
	public class main extends MovieClip
	{
		public var iTop:int=0;
hand.as
Код:
package cards
{
public class hand
{
	var iTop:int;

...

	function fClick()
	{iTop=main.iTop;}
выдает: 1119: Access of possibly undefined property iTop through a reference with static type Class.
*EDIT*
хм, this.myVariable пишется не внутри MyClass?


Последний раз редактировалось ctsl; 22.02.2008 в 13:07.
Старый 22.02.2008, 13:20
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Почему у вас имена классов начинаются с маленькой буквы? Вы где-нибудь во флешовом фреймворке видели классы с именами с маленькой буквы?

this.myVariable пишется внутри класса MyClass, где this.myVariable есть поле класса, а MyClass.myVariable есть статическое поле этого же класса.

То, что вы пытаетесь сделать, я не знаю.

Старый 22.02.2008, 13:31
ctsl вне форума Посмотреть профиль Отправить личное сообщение для ctsl Найти все сообщения от ctsl
  № 8  
Ответить с цитированием
ctsl
 
Аватар для ctsl

Регистрация: Feb 2008
Сообщений: 5
маленькие буквы пофиксил.
Цитата:
this.myVariable пишется внутри класса MyClass, где this.myVariable есть поле класса, а MyClass.myVariable есть статическое поле этого же класса.
а мне как раз нужно, чтобы в методе класса MyClass полю этого же класса присваивалось значение поля другого класса

Старый 22.02.2008, 13:41
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: 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';
    }
}
Код:
package {
    public class AnotherClass {
        public static var myVariable:String = 'AnotherClass';

        public function AnotherClass() {
            super();
        }
    }
}

Старый 22.02.2008, 14:00
ctsl вне форума Посмотреть профиль Отправить личное сообщение для ctsl Найти все сообщения от ctsl
  № 10  
Ответить с цитированием
ctsl
 
Аватар для ctsl

Регистрация: Feb 2008
Сообщений: 5
немного поэкспериментировав со статиком, пришел к выводу, что никакой он не статик (по крайней мере, в сишном смысле), что меня вполне устраивает.
все работает, __etc спасибо

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:03.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 20:03.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.