![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Feb 2011
Сообщений: 39
|
Подскажите пожалуста, как передать значение какой-нибуть переменной одного обьекта в другой, и почему переменные с меткой public видны только в текущем классе?
|
|
|||||
|
Покажите, как вы пробовали это сделать. Иначе, боюсь, ничего кроме чтения Мука, посоветовать нельзя.
P.S. пожалуйста, какой-нибудь, объект. |
|
|||||
|
[+4 06.05.14]
|
Цитата:
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; } |
|
|||||
|
Регистрация: Feb 2011
Сообщений: 39
|
С Public я разобрался. Я конкретизирую немного. У меня есть 2 класса и код в фрейме. Мне нужно из класса CQuest присвоить значение переменной index в какую-нибуть переменную класса CBasicElement.
Код в Фрейме: //Построение базовых елементов 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); 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 = "Свернуть"; } } } } 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(); } } } |
|
|||||
|
Регистрация: Feb 2011
Сообщений: 39
|
С фрема я доступ могу получить к index, а вот с CBasicElement не могу
|
|
|||||
|
Регистрация: Feb 2011
Сообщений: 39
|
Я пока многое не пробовал, я только начал изучать AS3. Из главного фрейма я могу получить доступ к переменным класса, мне же нужно сделать это из другого класса.
|
|
|||||
|
Регистрация: Feb 2011
Адрес: тут и там
Сообщений: 7
|
объекта CBasicElement не существует на stage во время выполнения конструктора....добавь addEventListener(Event.ADDED_TO_STAGE,...) и потом вы вытаскивай свои переменные.
|
|
|||||
|
Регистрация: Feb 2011
Адрес: тут и там
Сообщений: 7
|
это во первых...во вторых сначала добавь MyQuest, а потом уже MyBasicElement
|
|
|||||
|
Регистрация: Feb 2011
Сообщений: 39
|
alexniks Спасибо. А ты можеш мне подробней описать. В какой класс слушатель добавлять и что внутри его размещать, ато я пока ламер в AS3. Заранее спасибо.
|
|
|||||
|
Регистрация: Feb 2011
Адрес: тут и там
Сообщений: 7
|
Код в Фрейме:
сначала добавляй на сцену мувик, из которого хочешь получить переменные. У тебя сейчас наоборот. CBasicElement добавляется первым и пытается получить переменные из CQuest, в то время как второго еще нет на сцене. Класс CBasicElement: Во время выполнения конструктора класса CBasicElement самого мувика еще нет на сцене, поэтому ты не можешь обратится к stage. Поставь внутри конструктора (public function CBasicElement(){...}) листенер Event.ADDED_TO_STAGE , и только после срабатывания евента обращайся через stage к другому мувику или его переменным. Вообще это не самый лучший способ, но твой код это решение должно полностью удовлетворит. Удачи в твоих начинаниях! |
![]() |
![]() |
Часовой пояс GMT +4, время: 08:59. |
|
|
« Предыдущая тема | Следующая тема » |
|
|