|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: 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); } } } что написать вместо вопросов? Последний раз редактировалось Nemo_c; 21.03.2008 в 14:54. |
|
|||||
первое что в голову пришло это перенести угол в начало вопросиков а на остальное забить, второе что пришло в голову почему бы сразу не писать эти переменные в конструкторе?
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 {}
__________________
Black DRAGON хочет кушать Т_Т |
|
|||||
Регистрация: Jan 2008
Сообщений: 221
|
Перенести угол поворота в начало это не проблема. А например надо будет задать только длину ребра и colorOverState а остальное взять по умолчанию.. :-(
можно и явно задать этот вопрос можно отнести к разряду филосовских :-) что писать, что бы брать из конструктора данные по умолчанию. Последний раз редактировалось Nemo_c; 21.03.2008 в 16:23. |
|
|||||
Есть два варианта (которые я использую)
1. Передавать объект, так как уже говорил DRAGOnoid, также делает Away3D (там даже отдельный класс для парсинга этого объекта, кажись away3d.core.utils.Init) и многие другие, правда хромает скорость, тратится время на проверку типов и тому подобное. 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); } } } Последний раз редактировалось Dima_DPE; 21.03.2008 в 17:26. |
|
|||||
Регистрация: 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); } } } Видимо он пытается запихнуть этот класс в colorUpState Как этот ход или шаблон с "лишним" классом называется и где про него прочитать можно? теоритическое обоснование. Последний раз редактировалось Nemo_c; 21.03.2008 в 17:57. |
|
|||||
стервочка (я мужик)
|
ну само сабой. если вместо uint подсовывать BtnParams, конечно ругнётся.
|
|
|||||
Регистрация: Jan 2008
Сообщений: 221
|
to BlooDHounD как это всё подправить нужно что бы заработало?
|
|
|||||
Примерно так
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; } } } |
|
|||||
Регистрация: Jan 2008
Сообщений: 221
|
to Dima_DPE
А как этот программерский приём называется... ? и где про него прочитать. |
Часовой пояс GMT +4, время: 23:58. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|