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

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

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

Регистрация: Oct 2009
Сообщений: 53
Question Обращение к переменным экземпляра.

Есть класс А и класс Б. В экземпляре класса А (ЭА) создаются переменные. Как в классе Б обратиться к переменным экземпляра класса А (ЭА)?

Старый 09.04.2010, 04:35
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 2  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Передать методу Б ссылку на ЭА и обратиться через неё
__________________
тонкий тролль, осеянный благодатью

Старый 09.04.2010, 08:14
engineer_f_R вне форума Посмотреть профиль Отправить личное сообщение для engineer_f_R Найти все сообщения от engineer_f_R
  № 3  
Ответить с цитированием
engineer_f_R

Регистрация: Oct 2009
Сообщений: 53
А подскажите пожалуйста синтаксис этой беды или где про это почитать.

Старый 09.04.2010, 08:49
Artic вне форума Посмотреть профиль Найти все сообщения от Artic
  № 4  
Ответить с цитированием
Artic
Banned

Регистрация: Jun 2009
Сообщений: 298
Цитата:
В экземпляре класса А (ЭА) создаются переменные
как создаются ? если где то в методах то не как

а вобще

Код AS3:
package
{
    public class A
    {
         public var someVar:String = "varClassA";
         public function A()
         {
 
         }
     }
}
 
package
{
    public class B
    {
         public function B(linkClassA:A)
         {
               trace(linkClassA.someVar) // "varClassA"
         }
     }
}
 
package
{
    public class Main
    {
         public function Main()
         {
               var classA:A = new A();
               var classB:B = new B(classA);
         }
     }
}
можно через статик сделать

Код AS3:
package
{
    public class A
    {
         public static var someVar:String = "varClassA";
         public function A()
         {
 
         }
     }
}
 
package
{
    public class B
    {
         public function B()
         {
               trace(A.someVar) // "varClassA"
         }
     }
}
 
package
{
    public class Main
    {
         public function Main()
         {
               var classB:B = new B();
         }
     }
}
но запомните, что static определяет переменную/функцию, как принадлежащей КЛАССУ ! а не экземпляру

Старый 09.04.2010, 08:58
engineer_f_R вне форума Посмотреть профиль Отправить личное сообщение для engineer_f_R Найти все сообщения от engineer_f_R
  № 5  
Ответить с цитированием
engineer_f_R

Регистрация: Oct 2009
Сообщений: 53
Я делаю так:
Код AS3:
package 
{
	import flash.display.*;
	import flash.events.*;
	public class MainClass extends MovieClip
	{
		public var keyboardControl:KeyboardControl = new KeyboardControl ();
		var hero:HeroBase = new HeroBase();
		var heroM:HeroMove = new HeroMove();
 
		public function MainClass ()
		{
			stage.addChild(keyboardControl);
			keyboardControl.addEvents();
 
			stage.addChild(hero);
			hero.setCoordinates(50,50);
 
			stage.addChild(heroM);
			heroM.addEvents();
		}
}
 
}
Код AS3:
package {
	import flash.display.*;
	import flash.ui.*;
	import flash.events.*;
	import flash.events.KeyboardEvent;
 
	public class KeyboardControl extends MovieClip {
 
		public var leftKeyIsDown:Boolean=false;
		public var rightKeyIsDown:Boolean=false;
		public var upKeyIsDown:Boolean=false;
		public var downKeyIsDown:Boolean=false;
		var keyPressed:int;
		var keyReleaseCode:int;
 
		public function KeyboardControl():void {
 
 
		}
 
		public function addEvents(){
			stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressFunction);
			stage.addEventListener(KeyboardEvent.KEY_UP, keyReleaseFunction);
 
		}
 
 
 
		public function keyPressFunction(e:KeyboardEvent):void {
 
			keyPressed=e.keyCode;
 
			if (keyPressed==Keyboard.RIGHT) {
				rightKeyIsDown=true;
			}
			if (keyPressed==Keyboard.LEFT) {
				leftKeyIsDown=true;
			}
			if (keyPressed==Keyboard.UP) {
				upKeyIsDown=true;
			}
			if (keyPressed==Keyboard.DOWN) {
				downKeyIsDown=true;
			}
		}
 
 
		function keyReleaseFunction(e:KeyboardEvent):void {
			keyReleaseCode=e.keyCode;
			if (keyReleaseCode==Keyboard.RIGHT) {
				rightKeyIsDown=false;
			}
			if (keyReleaseCode==Keyboard.LEFT) {
				leftKeyIsDown=false;
			}
			if (keyReleaseCode==Keyboard.UP) {
				upKeyIsDown=false;
			}
			if (keyReleaseCode==Keyboard.DOWN) {
				downKeyIsDown=false;
			}
		}
	}
 
}
Код AS3:
package 
{
	import flash.display.*;
	import flash.ui.Keyboard;
	import flash.events.*;
 
	public class HeroMove extends MovieClip
	{
		public function HeroMove()
		{
 
		}
 
		public function addEvents(){
			stage.addEventListener(Event.ENTER_FRAME, everyFrame)
 
		}
 
 
		public function everyFrame(){
 
			if( keyboardControl.leftKeyIsDown){}
			if( keyboardControl.rightKeyIsDown){}
			if( keyboardControl.upKeyIsDown){}
			if( keyboardControl.downKeyIsDown){}
 
		}
 
	}
 
}
и при компиляции мне ругаются что keyboardControl.leftKeyIsDown - неизвестное свойство. Как мне его сделать известным?

Старый 09.04.2010, 09:05
Artic вне форума Посмотреть профиль Найти все сообщения от Artic
  № 6  
Ответить с цитированием
Artic
Banned

Регистрация: Jun 2009
Сообщений: 298
Код AS3:
package 
{
	import flash.display.*;
	import flash.events.*;
	public class MainClass extends MovieClip
	{
		public var keyboardControl:KeyboardControl = new KeyboardControl ();
		private var hero:HeroBase = new HeroBase();
		private var heroM:HeroMove;
 
		public function MainClass ()
		{
                        heroM  = new HeroMove(keyboardControl);
 
			stage.addChild(keyboardControl);
			keyboardControl.addEvents();
 
			stage.addChild(hero);
			hero.setCoordinates(50,50);
 
			stage.addChild(heroM);
			heroM.addEvents();
		}
}
 
}
 
package 
{
	import flash.display.*;
	import flash.ui.Keyboard;
	import flash.events.*;
 
	public class HeroMove extends MovieClip
	{
                private var keyboardControl:KeyboardControl
		public function HeroMove(kControl:KeyboardControl)
		{
                       keyboardControl = kControl;
		}
 
		public function addEvents(){
			stage.addEventListener(Event.ENTER_FRAME, everyFrame)
 
		}
 
 
		public function everyFrame(){
 
			if( keyboardControl.leftKeyIsDown){}
			if( keyboardControl.rightKeyIsDown){}
			if( keyboardControl.upKeyIsDown){}
			if( keyboardControl.downKeyIsDown){}
 
		}
 
	}
 
}


Последний раз редактировалось Artic; 09.04.2010 в 09:09.
Создать новую тему Ответ Часовой пояс GMT +4, время: 03:27.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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