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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.07.2011, 14:48
SONce вне форума Посмотреть профиль Отправить личное сообщение для SONce Найти все сообщения от SONce
  № 1  
Ответить с цитированием
SONce
[+1.3 20.12.10]

Регистрация: Nov 2009
Сообщений: 124
Question Вызов функции главного класса

Такая проблема:
Пишу клиент который взаимодействует с ред5 сервером, работает все прекрасно.
Понадобилось с сервера рассылать клиенту некоторую инфу.
Для приема во флеше создал класс:
Код AS3:
package 
{
	import flash.net.NetConnection;
 
 
	public class RemoteNetConnection extends NetConnection
	{
 
		public function serverMessage(msg : String):void
		{
			trace(msg);
 
 
		}
	}
 
}
serverMessage это и есть та функция которую вызывает сервер.
Данный класс вызывается из главного класса Main.

Вопрос следующий: как в RemoteNetConnection вызвать функцию из Main?

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

Регистрация: May 2010
Сообщений: 543
нужно в ваш класс передать ссылку на Main, например через сеттер. Тогда к Main можно обращаться по ссылке.
__________________
Вы грабите бедных людей. Парень со свирелью накажет вас. Хонгильдон (с)

Старый 14.07.2011, 14:57
SONce вне форума Посмотреть профиль Отправить личное сообщение для SONce Найти все сообщения от SONce
  № 3  
Ответить с цитированием
SONce
[+1.3 20.12.10]

Регистрация: Nov 2009
Сообщений: 124
спасибо

Добавлено через 4 минуты
Ну скажем так почти получилось)

создал сеттер:
Код AS3:
package 
{
	import flash.net.NetConnection;
 
 
	public class RemoteNetConnection extends NetConnection
	{
 
		public var _main:Main;
		public function serverMessage(msg : String):void
		{
 
				_main.serverMessage(msg);
 
 
		}
		public function set main(main:Main)
		{
			_main=main;
		}
	}
 
}
в главном класе функция:

Код AS3:
		public function serverMessage(msg:String)
		{
			trace(msg);
		}
И создание:
Код AS3:
...			nc = new RemoteNetConnection() ;
			nc.main=this;
...
Получаем:
RemoteNetConnection.as, строка 13 1195: Попытка вызова недоступного свойства serverMessage с помощью ссылки со статическим типом Main.


Последний раз редактировалось SONce; 14.07.2011 в 15:03.
Старый 14.07.2011, 15:09
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 4  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Почему бы в RemoteNetConnection не создать явный конструктор и не передать туда мейн в качестве параметра?

Старый 14.07.2011, 15:16
carrotoff вне форума Посмотреть профиль Отправить личное сообщение для carrotoff Найти все сообщения от carrotoff
  № 5  
Ответить с цитированием
carrotoff
 
Аватар для carrotoff

Регистрация: May 2010
Сообщений: 543
Main

Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import customClass;
 
	public class Main extends Sprite 
	{
 
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			var custom:customClass = new customClass();
			custom.main = this;
			custom.customFunction();
		}
 
		public function callMe():void {
			trace("Its alive!");
		}
 
	}
 
}
customClass

Код AS3:
package 
{
	public class customClass 
	{
		private var _main:Main;
 
		public function customClass() {
 
		}
 
		public function customFunction():void {
			if (this._main) {
				this._main.callMe();
			}
		}
 
		public function get main():Main 
		{
			return _main;
		}
 
		public function set main(value:Main):void 
		{
			_main = value;
		}
 
	}
 
}
__________________
Вы грабите бедных людей. Парень со свирелью накажет вас. Хонгильдон (с)


Последний раз редактировалось carrotoff; 08.08.2011 в 17:57.
Создать новую тему Ответ Часовой пояс GMT +4, время: 19:28.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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