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

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

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

Регистрация: May 2011
Сообщений: 221
Question Как вызвать функцию главного класса?

Положим есть главный класс, в нем есть функция

Код AS3:
Main.as
 
public function doSmth(str:String):void
{
	trace(str);
}
И сторонний класс

Код AS3:
Smth.as
 
Main.doSmth("blabla")
Почему таким образом невозможно вызвать функцию? Как это правильно сделать?

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

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Сделайте функцию статичной. Тогда её можно будет вызвать из другого класса.
Код AS3:
public static function doSmth():void

Старый 23.08.2011, 21:19
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 3  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Главный класс - по сути такой же, как и остальные. Это означает, что экземпляров такого класса может быть больше одного. И у каждого свои переменные, которые, возможно, используются в функции doSmth.
И вот потому что из записи
Код AS3:
Main.doSmth("blabla")
- невозможно понять, функцию КАКОГО именно экземпляра вызвать - ничего подобного нет.
И эта, почитайте про клчевое слово static.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 23.08.2011, 21:26
saikspaik вне форума Посмотреть профиль Отправить личное сообщение для saikspaik Найти все сообщения от saikspaik
  № 4  
Ответить с цитированием
saikspaik

Регистрация: Nov 2009
Сообщений: 300
Можно передать в Smth ссылку на главный класс.

Старый 23.08.2011, 22:03
Фенёк вне форума Посмотреть профиль Отправить личное сообщение для Фенёк Найти все сообщения от Фенёк
  № 5  
Ответить с цитированием
Фенёк

Регистрация: May 2011
Сообщений: 221
saikspaik можно по подробнее как передать ссылку на главный класс?

-De- Можно ли как-нибудь явно указать на требуемый экземпляр главного класса?
Насчет статика в курсе, но вроде как потом никаких изменений вносить нельзя. Используя статик, все так же передавть параметры в функцию?

Старый 23.08.2011, 23:31
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 6  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
можно сделать этот "главный" класс (другой вопрос, в чем его главность в отличии от остальных) синглтоном, тогда к нему будет доступ отовсюду, НО нужно ли это в действительности...

Что Вы хотите сделать ?

Старый 24.08.2011, 01:30
Фенёк вне форума Посмотреть профиль Отправить личное сообщение для Фенёк Найти все сообщения от Фенёк
  № 7  
Ответить с цитированием
Фенёк

Регистрация: May 2011
Сообщений: 221
у меня есть P2P чат для он-лайнового тетриса, в нем юзер-лист представлен в виде объектов, при двойном клике на которые, выбранному пользователю отправляется предложение поучаствовать в поединке.

Соответственно у меня есть главный класс, в котором написана функция отправки сообщений (они бывают разных типов) и есть класс участника, который должен отправлять сообщения при двойном клике на себя.

Пойду полистаю статью про синглтон, спасибо за информацию.

Старый 24.08.2011, 01:39
saikspaik вне форума Посмотреть профиль Отправить личное сообщение для saikspaik Найти все сообщения от saikspaik
  № 8  
Ответить с цитированием
saikspaik

Регистрация: Nov 2009
Сообщений: 300
Цитата:
можно по подробнее как передать ссылку на главный класс?
Просто в главном классе при создании Smth, передаешь ему ссылку на главный класс, конкретно вот так:
Код AS3:
var mySmth:Smth = new Smth(this);
А потом уже в Smth пользуешься ссылкой, это будет твой главный класс.

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

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
да оставьте бедный рут в покое )..из айтема юзера по которому кликнули диспатчите событие..подписав его на это событие в руте..в нем в обработчике и отправляйте что вам нужно куда нужно.

см. EventDispatcher,Event
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 24.08.2011, 11:21
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 10  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
Синглтон тут не нужен

Main
Код AS3:
package  {
 
	import flash.display.MovieClip;
	import flash.display.Sprite;
 
	public class Main extends MovieClip 
	{
		private var userItemsSprite:Sprite=new Sprite();
		private var users:Array=new Array();
 
		public function Main() 
		{
			addChild(userItemsSprite);
 
			for(var i:int=0;i<4;i++)
			{
				var newUserItem:UserItem=new UserItem(i);
				userItemsSprite.addChild(newUserItem);
				newUserItem.x=200;
				newUserItem.y=50+i*70;
			}
			addEventListener(UserItemEvent.USERITEM_DOUBLE_CLICK,userItemDoubleClickHandler,true);
		}
 
		private function userItemDoubleClickHandler(event:UserItemEvent):void
		{
			trace("USER id "+event.messageData.data+" double click");
		}
	}
}
UserItem
Код AS3:
package  
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class UserItem extends MovieClip 
	{
 
		private var _id:int;
 
		public function UserItem(id:int) 
		{
			_id=id;
			addEventListener(Event.ADDED_TO_STAGE,addedToStageHandler);
		}
 
		private function addedToStageHandler(event:Event):void
		{
			buttonMode=true;
			doubleClickEnabled=true;
			addEventListener(MouseEvent.DOUBLE_CLICK,doubbleClickHandler);
		}
		private function doubbleClickHandler(event:MouseEvent):void
		{
			dispatchEvent(new UserItemEvent(UserItemEvent.USERITEM_DOUBLE_CLICK,_id));
		}
	}
}

UserItemEvent
Код AS3:
package  
{
	import flash.events.Event;
 
	public class UserItemEvent extends Event
	{
		public var messageData:Object;
 
		public static const USERITEM_DOUBLE_CLICK:String="userItemDoubleClick";
 
 
		public function UserItemEvent(type:String,data:Object=null) 
		{
			super(type,data);
			var messObj:Object=new Object();
			messObj.data=data;
			this.messageData=messObj;
		}
	}
}
Вложения
Тип файла: rar yyy.rar (9.2 Кб, 39 просмотров)

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

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

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


 


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


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