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

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

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

Регистрация: Jan 2008
Сообщений: 221
По умолчанию Данные из конструктора, по умолчанию

Есть класс который описывает создание треугольной кноки.

Код:
package
{   import flash.display.*;
	public class TriangleButton extends SimpleButton
	{
	   public function TriangleButton(colorUpState:uint = 0xff0000, 
						    colorOverState:uint = 0x00ff00,
						    colorDownState:uint = 0x0000ff,
						    edgeSize:Number = 20,
						    angleRotation:Number = 30)
	  {
            upState      = new Triangle(colorUpState, edgeSize, angleRotation);
            overState    = new Triangle(colorOverState, edgeSize, angleRotation);
            downState    = new Triangle(colorDownState, edgeSize, angleRotation);
            hitTestState = upState;
	  }

	}
}
есть клас который вызывает и создаёт треугольную кнопку.
Код:
package
{   import flash.display.Sprite; 
	public class UsingBtn extends Sprite
	{
		public function UsingBtn()
		{
			var btn:TriangleButton = new TriangleButton();
			btn.x = 100;
			btn.y = 100;
			addChild(btn);
		}

	}
}
мне нужно цвета состояний кнопки, и длину ребра, взять по умолчанию из конструктора, а задать только угол поворота кнопки.

Код:
var btn:TriangleButton = new TriangleButton(?, ? , ? , ?, 120);
что написать вместо вопросов?


Последний раз редактировалось Nemo_c; 21.03.2008 в 14:54.
Старый 21.03.2008, 15:07
DRAGOnoid вне форума Посмотреть профиль Отправить личное сообщение для DRAGOnoid Посетить домашнюю страницу DRAGOnoid Найти все сообщения от DRAGOnoid
  № 2  
Ответить с цитированием
DRAGOnoid
 
Аватар для DRAGOnoid

Регистрация: Jan 2004
Адрес: Moscow
Сообщений: 389
Отправить сообщение для DRAGOnoid с помощью ICQ
первое что в голову пришло это перенести угол в начало вопросиков а на остальное забить, второе что пришло в голову почему бы сразу не писать эти переменные в конструкторе?
Код:
public var colorUpState:uint = 0xff0000;
public var colorOverState:uint = 0x00ff00;
public var colorDownState:uint = 0x0000ff;
public var edgeSize:Number = 20,
public var angleRotation:Number = 30
public function TriangleButton():void {}
третее если уж совсем труба - можно передавать любые значения в объекте - я точно не помню как это делали но выглядело что типа такого (этот код неверный так что додумать придётся самому)
Код:
public function TriangleButton({color1:uint=123, color2:uint=234}):void {trace (color1);}
__________________
Black DRAGON хочет кушать Т_Т

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

Регистрация: Jan 2008
Сообщений: 221
Перенести угол поворота в начало это не проблема. А например надо будет задать только длину ребра и colorOverState а остальное взять по умолчанию.. :-(

можно и явно задать
Код:
var btn:TriangleButton = new TriangleButton(0xff0000, 0xcc0000 , 0x0000ff , 45, 30);
этот вопрос можно отнести к разряду филосовских :-) что писать, что бы брать из конструктора данные по умолчанию.


Последний раз редактировалось Nemo_c; 21.03.2008 в 16:23.
Старый 21.03.2008, 17:21
Dima_DPE вне форума Посмотреть профиль Отправить личное сообщение для Dima_DPE Найти все сообщения от Dima_DPE
  № 4  
Ответить с цитированием
Dima_DPE

блогер
Регистрация: Aug 2005
Сообщений: 178
Записей в блоге: 4
Есть два варианта (которые я использую)
1. Передавать объект, так как уже говорил DRAGOnoid, также делает Away3D (там даже отдельный класс для парсинга этого объекта, кажись away3d.core.utils.Init) и многие другие, правда хромает скорость, тратится время на проверку типов и тому подобное.
Код:
public function TriangleButton({color1:uint=123, color2:uint=234}):void
2. Сделать отдельный класс содержащий публичные переменные и с пустым конструктором, экземпляр которого и будет передаваться конструктору TriangleButton
Код:
package
{   public class BtnParams
	{
		public var colorUpState:uint = 0xff0000;
		public var colorOverState:uint = 0x00ff00;
		public var colorDownState:uint = 0x0000ff;
		public var edgeSize:Number = 20;
		public var angleRotation:Number = 30;

		public function BtnParams()
		{
		}

	}
}
и тогда
Код:
package
{   import flash.display.Sprite; 
	public class UsingBtn extends Sprite
	{
		public function UsingBtn()
		{
			var btnParams:BtnParams=new ButtonParans();
			btnParams.colorDownState=0xffffff; // меняешь что надо
			var btn:TriangleButton = new TriangleButton(btnParams);
			btn.x = 100;
			btn.y = 100;
			addChild(btn);
		}

	}
}
"Лишний" класс BtnParams нужен для того, чтобы использовать одни начальные параметры для разных классов.


Последний раз редактировалось Dima_DPE; 21.03.2008 в 17:26.
Старый 21.03.2008, 17:52
Nemo_c вне форума Посмотреть профиль Отправить личное сообщение для Nemo_c Найти все сообщения от Nemo_c
  № 5  
Ответить с цитированием
Nemo_c
 
Аватар для Nemo_c

Регистрация: Jan 2008
Сообщений: 221
Я тут малость подправил и этот код выдаёт ошибку см ниже.

Код:
package
{   import flash.display.Sprite; 
	public class UsingBtn extends Sprite
	{
		public function UsingBtn()
		{
			
			var btnParams:BtnParams = new BtnParams();
			btnParams.colorDownState=0xffffff; // меняешь что надо
			var btn:TriangleButton = new TriangleButton(btnParams);// Здесь у меня компилятор ругнулся* 
			btn.x = 100;
			btn.y = 100;
			addChild(btn);
			
		}

	}
}
* 1067: Implicit coercion of a value of type BtnParams to an unrelated type uint. Triangle UsingBtn.as line 10 1206107326125 205
Видимо он пытается запихнуть этот класс в colorUpState

Как этот ход или шаблон с "лишним" классом называется и где про него прочитать можно?
теоритическое обоснование.


Последний раз редактировалось Nemo_c; 21.03.2008 в 17:57.
Старый 21.03.2008, 17:57
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 6  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
ну само сабой. если вместо uint подсовывать BtnParams, конечно ругнётся.

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

Регистрация: Jan 2008
Сообщений: 221
to BlooDHounD как это всё подправить нужно что бы заработало?

Старый 21.03.2008, 18:10
Dima_DPE вне форума Посмотреть профиль Отправить личное сообщение для Dima_DPE Найти все сообщения от Dima_DPE
  № 8  
Ответить с цитированием
Dima_DPE

блогер
Регистрация: Aug 2005
Сообщений: 178
Записей в блоге: 4
Примерно так
Код:
package
{   import flash.display.*;
	public class TriangleButton extends SimpleButton
	{
	   public function TriangleButton(params:BtnParams)
	  {
            upState      = new Triangle(params.colorUpState, params.edgeSize, params.angleRotation);
            overState    = new Triangle(params.colorOverState, params.edgeSize, params.angleRotation);
            downState    = new Triangle(params.colorDownState, params.edgeSize, params.angleRotation);
            hitTestState = upState;
	  }

	}
}
А лишний класс, это ни что иное как тотже объект, только с типизированными переменными и с прописаными стандартными значениями.

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

Регистрация: Jan 2008
Сообщений: 221
to Dima_DPE
А как этот программерский приём называется... ? и где про него прочитать.

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

блогер
Регистрация: Aug 2005
Сообщений: 178
Записей в блоге: 4
to Nemo_c даже не знаю, видел как-то в одном проекте, там-же использовал, да и все наверное.

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

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

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


 


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


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