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

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

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

Регистрация: Feb 2011
Сообщений: 39
Cool Как получить доступ к переменным объекта?

Подскажите пожалуста, как передать значение какой-нибуть переменной одного обьекта в другой, и почему переменные с меткой public видны только в текущем классе?

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

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Покажите, как вы пробовали это сделать. Иначе, боюсь, ничего кроме чтения Мука, посоветовать нельзя.

P.S. пожалуйста, какой-нибудь, объект.

Старый 25.02.2011, 14:46
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 3  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
переменные с меткой public видны только в текущем классе
Не правда.

Код AS3:
public class A {
public var aa:int = 55;
public function A() {
}
}
 
public class B() {
public function B() {
 var a:A = new A();
 trace(a.aa) // 55;
}
}
 
Другой пример
public class A {
public static var aa:int = 55;
public function A() {
}
}
 
public class B() {
public function B() {
 
 trace(A.aa) // 55;
}

Старый 25.02.2011, 20:27
Kadmus вне форума Посмотреть профиль Отправить личное сообщение для Kadmus Найти все сообщения от Kadmus
  № 4  
Ответить с цитированием
Kadmus

Регистрация: Feb 2011
Сообщений: 39
С Public я разобрался. Я конкретизирую немного. У меня есть 2 класса и код в фрейме. Мне нужно из класса CQuest присвоить значение переменной index в какую-нибуть переменную класса CBasicElement.

Код в Фрейме:
Код AS3:
//Построение базовых елементов
for(var j=0;j<5;j++)
{
	var MyBasicElement:CBasicElement = new CBasicElement();
	//MyBasicElement[i] = new CBasicElement();
	addChild(MyBasicElement);
}
//Окно с заданиями
var MyQuest:CQuest = new CQuest();
addChild(MyQuest);
Класс CQuest:
Код AS3:
package {
	import flash.display.*;
	import flash.events.*;
	public class CQuest extends MovieClip
	{
		private var position:Boolean = true;
		public var Qindex:Number;
		private var questNumber:Number = 0;
		private var Quest_txt:Array = ["Введите частоту встречаемых символов в тексте в поля соответствующих элементов и нажмите <Дальше>:","2","3","4"];
		public var Text_txt:Array = ["Искание истины совершается не с весельем, а с волнением и беспокойством; но все-таки надо искать ее потому, что, не найдя истины и не полюбив ее, ты погибнешь. Блез Паскаль","Нет такого невежды, который не мог бы задать больше вопросов, чем может их разрешить самый знающий человек. Михаил Васильевич Ломоносов","Мир достаточно огромен, чтобы удовлетворить потребности любого человека, но при этом очень мал, чтобы удовлетворить простую человеческую жадность. Махатма Ганди","Не стоит делать вывод о собственном величии по размеру твоей тени при закате солнца... Пифагор","В том и состоит пагубность дурного поступка, что он таит в себе зародыш новых мерзостей. Иоганн Фридрих Шиллер"];
		public function CQuest()
		{
			this.x = 250;
			this.y = 150;
			Qindex = Math.ceil(Math.random()*4);
			Quest_txt[0] += "\n\n" + Text_txt[Qindex];
			this.table_mc.quest_txt.text = Quest_txt[0];
 
			this.button_mc.button_txt.text = "Свернуть";
			this.button_mc.addEventListener(MouseEvent.MOUSE_DOWN,moveQuest);
		}
		private function moveQuest(e:Event):void
		{
			if(position==true)
			{
				this.x = 250;
				this.y = -196;
				this.table_mc.visible = false;
				position = false;
				this.button_mc.button_txt.text = "Задание";
			}
			else
			{
				this.x = 250;
				this.y = 150;
				this.table_mc.visible = true;
				position = true;
				this.button_mc.button_txt.text = "Свернуть";
			}
		}
	}
}
Класс CBasicElement:
Код AS3:
package {
	import flash.display.*;
	import flash.events.*;
	import flash.text.*;
	public class CBasicElement extends MovieClip
	{
		private var ABC:Array = ["А","Б","В","Г","Д"];
		private static var i:Number = 0;
		private static var movieY:Number = -30;
		public function CBasicElement()
		{
			this.ElementSymbol_txt.text = ABC[i];
			i++;
			movieY += this.height + 15;
			this.x = 50;
			this.y = movieY;
			this.addEventListener(MouseEvent.MOUSE_DOWN,moveElement);
			this.addEventListener(MouseEvent.MOUSE_UP,stopElement);
			this.ElementNumber_txt.addEventListener(FocusEvent.FOCUS_OUT,modDynamic);
			//trace(stage.MyQuest.table_mc.quest_txt.text);
			//trace(Stage.MyQuest.Text_txt[MyQuest.Qindex]);
		}
 
 
		private function modDynamic(e:Event)
		{
			this.ElementNumber_txt.type = TextFieldType.DYNAMIC;
			this.ElementNumber_txt.selectable=false;
		}
		private function moveElement(e:Event):void
		{
			this.startDrag();
		}
		private function stopElement(e:Event):void
		{
			stopDrag();
		}
	}
}

Старый 25.02.2011, 20:35
Kadmus вне форума Посмотреть профиль Отправить личное сообщение для Kadmus Найти все сообщения от Kadmus
  № 5  
Ответить с цитированием
Kadmus

Регистрация: Feb 2011
Сообщений: 39
С фрема я доступ могу получить к index, а вот с CBasicElement не могу

Старый 26.02.2011, 02:01
Kadmus вне форума Посмотреть профиль Отправить личное сообщение для Kadmus Найти все сообщения от Kadmus
  № 6  
Ответить с цитированием
Kadmus

Регистрация: Feb 2011
Сообщений: 39
Я пока многое не пробовал, я только начал изучать AS3. Из главного фрейма я могу получить доступ к переменным класса, мне же нужно сделать это из другого класса.

Старый 26.02.2011, 17:43
alexniks вне форума Посмотреть профиль Отправить личное сообщение для alexniks Найти все сообщения от alexniks
  № 7  
Ответить с цитированием
alexniks

Регистрация: Feb 2011
Адрес: тут и там
Сообщений: 7
объекта CBasicElement не существует на stage во время выполнения конструктора....добавь addEventListener(Event.ADDED_TO_STAGE,...) и потом вы вытаскивай свои переменные.

Старый 26.02.2011, 17:50
alexniks вне форума Посмотреть профиль Отправить личное сообщение для alexniks Найти все сообщения от alexniks
  № 8  
Ответить с цитированием
alexniks

Регистрация: Feb 2011
Адрес: тут и там
Сообщений: 7
это во первых...во вторых сначала добавь MyQuest, а потом уже MyBasicElement

Старый 27.02.2011, 18:03
Kadmus вне форума Посмотреть профиль Отправить личное сообщение для Kadmus Найти все сообщения от Kadmus
  № 9  
Ответить с цитированием
Kadmus

Регистрация: Feb 2011
Сообщений: 39
alexniks Спасибо. А ты можеш мне подробней описать. В какой класс слушатель добавлять и что внутри его размещать, ато я пока ламер в AS3. Заранее спасибо.

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

Регистрация: Feb 2011
Адрес: тут и там
Сообщений: 7
Код в Фрейме:
сначала добавляй на сцену мувик, из которого хочешь получить переменные. У тебя сейчас наоборот. CBasicElement добавляется первым и пытается получить переменные из CQuest, в то время как второго еще нет на сцене.

Класс CBasicElement:
Во время выполнения конструктора класса CBasicElement самого мувика еще нет на сцене, поэтому ты не можешь обратится к stage. Поставь внутри конструктора (public function CBasicElement(){...}) листенер Event.ADDED_TO_STAGE , и только после срабатывания евента обращайся через stage к другому мувику или его переменным.

Вообще это не самый лучший способ, но твой код это решение должно полностью удовлетворит. Удачи в твоих начинаниях!

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

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

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


 


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


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