![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: 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, время: 00:53. |
|
|
« Предыдущая тема | Следующая тема » |
|
|