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

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

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

Регистрация: Apr 2011
Сообщений: 13
По умолчанию Вызов функции и возврат значения

Доброго времени суток. Я начинающий. Сразу извеняюсь за терминологию (если где что не так написал). Есть вот такой код- это упращенная версия исходного кода:
Главный класс. Здесь контейнеры в которые помещают изображения.

Код AS3:
package {
	import flash.display.Sprite;
	import flash.display.Stage;
 
	[SWF(width = "640", height = "480")]
 
	public class Main extends Sprite {
		public var contener:Sprite;
		public var contenerA:Sprite;
		public var contenerB:Sprite;
		public var a;
 
		public function Main() {
		contener = new Sprite;
		contenerA = new Sprite;
		contenerB = new Sprite;
		stage.frameRate = 24;
		addChild(contener);
 
		contener.addChild(contenerA);
		contener.addChild(contenerB);
 
		a = new A(this);	
		}
	}
 
}
Класс А. Здесь добавляется картинка в один из контейнеров и происходит отслеживания нажатия клавиши пробел.

Код AS3:
package {
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.display.Bitmap;
	import flash.display.Stage;
 
	public class A extends Sprite {
		private var photo1:Bitmap;
		public var ss;
		[Embed(source='../photo1.png')] public var Photo1:Class;
		public var main:Main;
		private var space:Boolean;
 
	public function A (mamain) {
 
		main = mamain;
 
		photo1 = new Photo1;
		main.contenerA.addChild(photo1);
 
		main.stage.addEventListener(KeyboardEvent.KEY_DOWN,key_down);
		main.stage.addEventListener(KeyboardEvent.KEY_UP, key_up);
		addEventListener(Event.ENTER_FRAME, onEnterFrame);
 
 
	}
		function key_down(e:KeyboardEvent) {
			if (e.keyCode==32) {
			  space = true;
			}
	}
		function key_up(e:KeyboardEvent) {
			if (e.keyCode==32) {
			  space = false;
			}
	}
		function onEnterFrame(event:Event):void { 
			if (space == true) {
				ssss();
			}
		function ssss() {
			ss = new B(main);
		}
	     }
	}
}
Класс B.

Код AS3:
package {
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.display.Bitmap;
	import flash.display.Stage;
 
	public class B extends Sprite {
		public var main;
		private var photo2:Bitmap;
		private var photo3:Bitmap;
		private var photoX;
		private var ccc;
		public var cc:C;
	[Embed(source='../photo2.png')]  public var Photo2:Class;
	[Embed(source='../photo3.png')]  public var Photo3:Class;
 
	public function B(mamain) {
 
		main = mamain;
		photo2 = new Photo2;
		photo3 = new Photo3;
 
		/*Здесь нужен вызов функции variantPhoto () из класса С, который вернет значение variant и присвоит его переменной ссс
		*/
		if (ccc==1) { photoX = photo2; }
		if (ccc == 2) { photoX = photo3; }
		photoX.x = 200;
		photoX.y = 300;
		main.contenerB.addChild(photoX);
 
	}
	}
 
}
По нажатию пробела в классе В добовляется на сцену еще какртинка, а вот какая - зависит от класса С. Вопрос как создать функцию (или метод ) которая вызовет класс С и вернет необходимое занчение???

Класс С.
Код AS3:
package  {
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.display.Stage;
	import flash.display.Sprite;
 
 
	public class C extends Sprite {
		public var variant:Number;
		private var ors;
		public var main:Main;
 
		public function C (mamain) {
 
			main = mamain;
 
 
			main.stage.addEventListener(KeyboardEvent.KEY_DOWN,key_down);
 
		}
 
		private function key_down(e:KeyboardEvent) {
			if (e.keyCode == 49) {
			variant = 1;
			}
			if (e.keyCode == 50) {
			variant = 2;
			}
			if (e.keyCode == 51) {
			variant = 3;
			}
			if (e.keyCode == 52) {
			variant = 4;
			}	
		}
//значение variant нужно вернут в класс В
		private function variantPhoto() {
			return variant;
		}
 
	}
}
Мне очень хотелось разобраться в этом вопросе, особенно в плане параметров и аргументов метод и конструкторов. Заранее благодарен.

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
В классе B подпишитесь на нажатие пробела. В классе C создайте функцию, которая будет принимать код клавиши и возвращать номер варианта.
В обработчике клавиатуры в классе B вызывайте функцию класса С и получайте Ваш вариант. Для того чтобы все заработало у B должна быть ссылка на экземпляр класса C. Если ссылку на экземпляр C передать сложно/неудобно, сделайте эту функцию статической.
__________________
...вселенская грусть

Старый 14.04.2011, 13:15
ndez вне форума Посмотреть профиль Отправить личное сообщение для ndez Найти все сообщения от ndez
  № 3  
Ответить с цитированием
ndez

Регистрация: Apr 2011
Сообщений: 13
А разве данная функция не вернет значение нужного варианта
Код AS3:
		private function variantPhoto() {
			return variant;
		}
Вообще то я не совсем понял зачем классу В подписываться на нажатие пробела. По нажатию пробела и так картинка вставляется на сцену. Может я конечно и не прав, но я предполагал написать в конструкторе класса В что то типа:
Код AS3:
		cc = new C();
		ccc = cc.variantPhoto();
только получается ошибка, а какие аргументы или параметры писать в скобках я не знаю. Вот по этому и спрашиваю.

Старый 14.04.2011, 14:35
BezDelnik вне форума Посмотреть профиль Отправить личное сообщение для BezDelnik Найти все сообщения от BezDelnik
  № 4  
Ответить с цитированием
BezDelnik

Регистрация: Jul 2008
Сообщений: 80
Отправить сообщение для BezDelnik с помощью ICQ
для начала
Код AS3:
public function variantPhoto():Number {
	return variant;
}

Старый 14.04.2011, 18:53
ndez вне форума Посмотреть профиль Отправить личное сообщение для ndez Найти все сообщения от ndez
  № 5  
Ответить с цитированием
ndez

Регистрация: Apr 2011
Сообщений: 13
Результат получил путем перенесения слушателя клавиш выбора картинок в класс В, класс С вообще удалил. Но очень бы хотелось в плане общего развития узнать возможно ли при данном раскладе реализовать вызов метода и возврат значения и как это сделать.

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

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

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


 


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


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