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

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

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

Регистрация: Nov 2008
Адрес: Moscow
Сообщений: 493
Отправить сообщение для Dr_Bra с помощью ICQ
По умолчанию обращение из дополнительного класса к объекту главного класса

Есть главный класс MainClass, в нем есть объект obj. Внутри этого объекта obj, есть еще один объект с собственным классом AdditionalClass. Нужно из класса AdditionalClass обратиться к объекту класса MainClass
Код AS3:
package
{
	import flash.display.*;
 
	public class MainClass extends Sprite
	{
		private var obj:Sprite;
 
		public function MainClass():void
		{			
			obj = obj_mc;
		}
	}
}
Код AS3:
package
{
	import flash.display.*;
	import flash.events.Event;
 
	public class AdditionalClass extends Sprite
	{
		public function AdditionalClass():void
		{
			this.addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event):void
		{
			trace(obj)
		}
	}
}
Добавлено через 2 минуты
подскажите, плз, как правильно передавать данные из одного в другой класс

Добавлено через 12 минут
пытаюсь передать переменную, выдает ошибку
Код AS3:
no default constructor found in base class AdditionalCldcc
Код AS3:
package
{
	import flash.display.*;
	import AdditionalClass;
 
	public class MainClass extends Sprite
	{
		private var obj:Sprite;
 
		public function MainClass(obj):void
		{			
			obj = obj_mc;
		}
 
	}
}
Код AS3:
package
{
	import flash.display.*;
	import flash.events.Event;
 
	public class AdditionalClass extends Sprite
	{
		public function AdditionalClass(obj:Sprite):void
		{
			this.addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event):void
		{
			//trace(obj)
			this.addEventListener(Event.ENTER_FRAME, moveStar);
		}
 
		private function moveStar(e:Event):void
		{
			this.rotation += 1;
		}
	}
}
Добавлено через 23 минуты
вообще можно ли в классе AdditionalClass, создать метод, который бы останавливал вращение при наведении на obj ?

Старый 20.09.2010, 12:27
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 2  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Вам нужен static, если я правильно понял. Обращаться MainClass.переменная
__________________
тут я

Старый 20.09.2010, 12:44
leofit вне форума Посмотреть профиль Отправить личное сообщение для leofit Найти все сообщения от leofit
  № 3  
Ответить с цитированием
leofit
 
Аватар для leofit

Регистрация: Dec 2009
Сообщений: 428
Либо
Код AS3:
dispatchEvent(new Event('myEvent'))
А в главном классе объявляете листенер
Код AS3:
addEventListener("myEvent",myFunc, true);
__________________
Скажи мне кто твой друг и я скажу тебе кто твой друг

Старый 20.09.2010, 13:06
Dr_Bra вне форума Посмотреть профиль Отправить личное сообщение для Dr_Bra Посетить домашнюю страницу Dr_Bra Найти все сообщения от Dr_Bra
  № 4  
Ответить с цитированием
Dr_Bra
 
Аватар для Dr_Bra

Регистрация: Nov 2008
Адрес: Moscow
Сообщений: 493
Отправить сообщение для Dr_Bra с помощью ICQ
пробуем со статик:
Код AS3:
package
{
	import flash.display.*;
	import AdditionalClass;
 
	public class MainClass extends MovieClip
	{
		public static var OBJ:MovieClip;
		private var star:AdditionalClass;
 
		public function MainClass():void
		{			
			OBJ = obj_mc;
			star = obj_mc.star_mc;
		}
	}
}
Код AS3:
package
{
	import flash.display.*;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class AdditionalClass extends MovieClip
	{
		public function AdditionalClass():void
		{
			this.addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event):void
		{
			MainClass.OBJ.addEventListener(MouseEvent.CLICK, stopStar);
			this.addEventListener(Event.ENTER_FRAME, moveStar);
		}
 
		private function moveStar(e:Event):void
		{
			this.rotation += 1;
		}
 
		private function stopStar(e:MouseEvent):void
		{
			this.removeEventListener(Event.ENTER_FRAME, moveStar);
		}
	}
}
выдает вот такую штуку :
Код AS3:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
	at AdditionalClass/init()
	at flash.display::Sprite/constructChildren()
	at flash.display::Sprite()
	at flash.display::MovieClip()
	at flash.display::Sprite/constructChildren()
	at flash.display::Sprite()
	at flash.display::MovieClip()
	at MainClass()

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

Регистрация: Dec 2009
Сообщений: 428
Не совсем понял, что Вам надо, попробуйте так


Код AS3:
package
{
	import flash.display.*;
	import AdditionalClass;
 	import flash.events.Event;
 
	public class MainClass extends MovieClip
	{
		public static var OBJ:MovieClip;
		private var star:AdditionalClass;
 
		public function MainClass():void
		{			
                        this.addEventListener('stopStar', stopStarFunc, true);
			OBJ = obj_mc;
			star = obj_mc.star_mc;
		}
 
		private function stopStarFunc(event:Event):void {
			trace('stopStar');
		}
	}
}
Код AS3:
package
{
	import flash.display.*;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class AdditionalClass extends MovieClip
	{
		public function AdditionalClass():void
		{
			trace('added');
			this.addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event):void
		{
			this.addEventListener(MouseEvent.CLICK, stopStar);
			this.addEventListener(Event.ENTER_FRAME, moveStar);
		}
 
		private function moveStar(e:Event):void
		{
			this.rotation += 1;
		}
 
		private function stopStar(e:MouseEvent):void
		{
			dispatchEvent(new Event('stopStar'));
			this.removeEventListener(Event.ENTER_FRAME, moveStar);
		}
	}
}
__________________
Скажи мне кто твой друг и я скажу тебе кто твой друг

Старый 20.09.2010, 13:47
Jackson вне форума Посмотреть профиль Отправить личное сообщение для Jackson Найти все сообщения от Jackson
  № 6  
Ответить с цитированием
Jackson

Регистрация: Sep 2010
Сообщений: 33
http://siliren.ru/content/view/115/1/
В этом примере использовано такое обращение: MainClass(root).obj.obj_property, строки 20,21.
Попробуй, может получится)))

Старый 20.09.2010, 14:15
Dr_Bra вне форума Посмотреть профиль Отправить личное сообщение для Dr_Bra Посетить домашнюю страницу Dr_Bra Найти все сообщения от Dr_Bra
  № 7  
Ответить с цитированием
Dr_Bra
 
Аватар для Dr_Bra

Регистрация: Nov 2008
Адрес: Moscow
Сообщений: 493
Отправить сообщение для Dr_Bra с помощью ICQ
я так понял нужно учить гет и сет методы
вот правильный скрипт
Код AS3:
package 
{
	import flash.display.*;
	import AdditionalClass;
 
	public class MainClass extends MovieClip
	{
		private var obj:MovieClip;
		private var star:AdditionalClass;
 
		public function MainClass():void
		{
			obj = obj_mc;
			star = obj.star_mc;
			star.mainClass = this;
		}
	}
}
Код AS1/AS2:
package 
{
	import flash.display.*;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class AdditionalClass extends MovieClip
	{
		private var _mainClass:DisplayObjectContainer;
 
		public function AdditionalClass():void
		{
			this.addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event):void
		{
			this.addEventListener(Event.ENTER_FRAME, moveStar);
		}
 
		public function set mainClass(mainClass : DisplayObjectContainer):void
		{
			_mainClass = mainClass;
			_mainClass["obj_mc"].addEventListener(MouseEvent.CLICK, stopStar);
		}
 
		private function moveStar(e:Event):void
		{
			this.rotation +=  1;
		}
 
		private function stopStar(e:MouseEvent):void
		{
			this.removeEventListener(Event.ENTER_FRAME, moveStar);
		}
	}
}

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

Теги
главный класс , дополнительный класс , обращение

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

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


 


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


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