![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2015
Сообщений: 63
|
Приветствую! Перешел к размещению кода к классам(выполняют разные задачи) и необходимо задать для всех классов одну общую переменную (чтобы они общались ), пробовал импортировать класс и оперировать значением класс.переменная, но выдает ошибку. Как вы вообще решаете такие задачи по общению классов?
|
|
|||||
|
Регистрация: Feb 2015
Сообщений: 63
|
Достаточно будет записать такую static var переменную в основном классе? Будет ли она трактоваться в зависимости от приватности класса, который захочет её изменить?
|
|
|||||
|
Регистрация: Jun 2014
Сообщений: 558
|
ну можно по разному, мне хватает пока
package { import StartClass.StartDaubClass; public class main { private var daub: StartDaubClass; private var i: Number = 10; public function main(){ daub = = new StartDaubClass(i) //отправляете ссылку на i в этот экземпляр классаStartDaubClass } } } |
|
|||||
|
Регистрация: Feb 2015
Сообщений: 63
|
Спасибо попробовал, но мне требуется передать данные в реальном времени между классами, а здесь получается от основного класса передается другим. Например в одном из классов изменилась переменная и её значение можно использовать везде.
package { import StartClass.StartOneClass; import StartClass.StartTwoClass; public class main { private var daub1: StartOneClass; private var daub2: StartTwoClass; private var i: Number = 10; public function main(){ daub1 = new StartOneClass(i) // начальное значение i =10 daub2 = new StartTwoClass(i) // начальное значение i =10 } } } |
|
|||||
|
Регистрация: Jun 2014
Сообщений: 558
|
измените в одном классе и измениться во всех, а чтоб класс отреагировал нужен слушатель событий
что-то типо stage.addEventListener(Event.ENTER_FRAME, eventFunction); private function eventFunction(e: Event): void{ if (i == 9) // этот слушатель событий будет каждый кадр проверять "не равно ли i 9", что бы выполнить код ниже //ваш код } если у вас код будет ругаться, то нужно package { import StartClass.StartOneClass; import StartClass.StartTwoClass; public class main { private var daub1: StartOneClass; private var daub2: StartTwoClass; private var i: Number = 10; public function main(){ daub1 = new StartOneClass(i, stage) // начальное значение i =10 daub2 = new StartTwoClass(i, stage) // начальное значение i =10 } } } package { public class StartDaubClass { private var i: Number; private var stage:*; public function StartDaubClass (_i, _stage){ i = _i; stage = _stage; } } } код не проверял |
|
|||||
|
Регистрация: Feb 2015
Сообщений: 63
|
Сделал по схеме, не ругается, все работает, из класса main значение =0 передает в функцию StartOneClass и StartTwoClass, в StartOneClass меняю значение на 10, в классе StartTwoClass делаю trace значения в отслеживателе события. Получается 0, 0 , 0 , .... То есть не срабатывает.
|
|
|||||
|
Регистрация: Jun 2014
Сообщений: 558
|
хм, действительно, ссылки на классы передаются, а вот на переменные создаёт новые экземпляры - думал, что сходно действие, ну тогда как вариант
package { public class StartOneClass{ public var i: Number; private var stage:*; public function StartOneClass(_i, _stage){ i = _i; stage = _stage; } } } package { import StartClass.StartOneClass; import StartClass.StartTwoClass; public class main { private var daub1: StartOneClass; private var daub2: StartTwoClass; private var i: Number = 10; public function main(){ daub1 = new StartOneClass(i, stage); // начальное значение i =10 daub2 = new StartTwoClass(i, stage); // начальное значение i =10 stage.addEventListener(Event.ENTER_FRAME, functionControl); } private function functionControl (e: Event): void{ if (StartOneClass.i != i){ //вызывает public(создать ее) функцию из StartTwoClass(или ещё какой/их), в которой написано что делать, коль изменена i //ну и аналогичная проверка для иных классов } } это на скорую руку как вариант, что бы я написал, мож что получше подскажут Добавлено через 12 минут это как самый простой и очевидный, если классов много, проще в массив запихнуть, можно вообще сделать, как именно я бы сделал по уму (моему ) но это уже потребует проверки в работе |
|
|||||
|
Регистрация: Feb 2015
Сообщений: 63
|
Цитата:
samana предложил статические использовать переменные, что за способ? |
|
|||||
|
Регистрация: Jun 2014
Сообщений: 558
|
Проверил последний вариант - работает, думаю у вас ошибка
про статистический не могу ничего сказать, читал, понимаю, но ни разу не пригодился, так что писать от болды не стану Добавлено через 1 минуту вы написали public var i ? |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:28. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|