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

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

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

Регистрация: Feb 2012
Сообщений: 47
По умолчанию В конструктор без рекурсии передать переменную в которой хранится экземпляр класса

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

Код AS3:
package p {
	import flash.display.*;
	import flash.net.*;
	import flash.events.*;
	import flash.text.*;
	import flash.display.Sprite;
    public class Application extends MovieClip {
	    public function Application() {
			trace("Конструктор основного класса Application");    
			addChild(_panel);     //Надо как-то соответствующе обращаться к
			addChild(_glav0);     //этим переменным(они принадлежат классу Ref)
		}
	}
}
Код AS3:
package p{
	import flash.display.*;
	import flash.net.*;
	import flash.events.*;
	import flash.text.*;
	import flash.display.Sprite;
 
	public class Panel extends Sprite {
		public function Panel() {
			addChild(new CreateButton("Главная", 13,  0x000000, "Times New Roman", true, 
									  false, 0, 0, 100, 20, TextFieldAutoSize.NONE,
									  TextFormatAlign.CENTER, true, 0xdf6415, true, 0x000000, 
									  true, _glav0)); // Здесь тоже.
		}
	}
}
Код AS3:
package p {		
	import flash.display.*;
	import flash.net.*;
	import flash.events.*;
	import flash.text.*;
	import flash.display.Sprite;
 
	public class Glava0 extends Sprite {
		private var biology;
		private var ch1;
		public function Glava0() {
			trace("Класс-контейнер для содержимого Главной страницы - Glava0");
			biology = new CreateButton('Интерактивный\n курс\n\n "Биология\n\n 8 класс"', 
									   28, 0x00ff00, "Segoe Print", true, false, 90, 40, 
									   100, 100, TextFieldAutoSize.CENTER, 
									   TextFormatAlign.CENTER, false, null, false, null, 
									   false, null);
			addChild(biology);
			ch1 = new CreateButton("Организм человека. Общий обзор", 14, 0x0000ff, "Segoe Print",
								   true, false, 280, 40, 100, 100, TextFieldAutoSize.LEFT,
								   TextFormatAlign.LEFT, false, null, false, null, true,
								   _glav1); // И здесь
			addChild(ch1);
		}
	}
}
Код AS3:
package p {
	import flash.display.*;
	import flash.net.*;
	import flash.events.*;
	import flash.text.*;
	import flash.display.Sprite;
	import flash.display.DisplayObjectContainer;
 
	public class CreateButton extends Sprite {
		private var txt:TextField = new TextField();
		private var format:TextFormat;
		private var psize;
		private var pchild;
 
 
		public function CreateButton(ptext:String, size:uint, color:Object, font:String, 
									 bold:Boolean, italic:Boolean, xpos:uint, ypos:uint, 
									 wid:uint, heig:uint, autosize, align, back:Boolean, 
									 backcolor, bord:Boolean, bordcolor, mouse:Boolean, 
									 child) {
			// Я выпустил ненужную часть кода
			txt.addEventListener(MouseEvent.CLICK, clickListener);
			txt.addEventListener(MouseEvent.MOUSE_OVER, overListener);
			txt.addEventListener(MouseEvent.MOUSE_DOWN, downListener);
		}
 
		private function clickListener(e:MouseEvent):void {
			format.size = psize;
			txt.setTextFormat(format);
			removechild();			// Вот здесь я попытался сделать рекурсивную функцию, которая удаляет все с экрана. По этому поводу тоже жду критики.
			addChild(_panel);       // Здесь тоже надо как-то обратиться к переменной правильно
			addChild(this.pchild);
		}
		private function overListener(e:MouseEvent):void {
		  	txt.setTextFormat(format);
		}
		private function downListener(e:MouseEvent):void {
			format.size = psize+1;
			txt.setTextFormat(format);
		}
		private function removechild() {
			removeChildAt(0);
			if(numChildren == 0) {
				return;
			}
			removechild();
		}
	}
}

Старый 29.02.2012, 16:37
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Михаил Свинцов, название темы должно раскрывать суть вопроса.
__________________
Идите первым!

Старый 29.02.2012, 16:40
Михаил Свинцов вне форума Посмотреть профиль Отправить личное сообщение для Михаил Свинцов Найти все сообщения от Михаил Свинцов
  № 3  
Ответить с цитированием
Михаил Свинцов

Регистрация: Feb 2012
Сообщений: 47
ок простите

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

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Слишком много лишнего кода. Кроме того, вопрос намекает на то, что у Вас что-то не лады с архитектурой.
Но отвечу по вопросу псевдокодом:
Код AS3:
public function MyClass(obj:MyClass = null) {
    if (obj) 
        _obj = obj;
}
 
var obj1:MyClass = new MyClass();
var obj2:MyClass = new MyClass(obj1);
Вот как-то так. Кажется, я верно в голове логику выстроил. И вроде бы верно понял вопрос.
__________________
тут я

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

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

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


 


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


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