Я создал свою собственную кнопку, которая просто простирается от Sprite.
Он способен показывать 3 различных текста, появляющихся и исчезающих с помощью таймера.
В моей функции рисования я сначала рисую прямоугольник с графическим объектом Sprites, представляющим фон кнопки.
Я добавил функцию для установки ширины кнопки. Это свойство используется для рисования прямоугольника. Я знаю, что размер спрайтов обновляется после рисования прямоугольника. Но по какой-то причине ширина спрайта всегда больше, чем я установил с помощью функции setButtonWidth.
Теперь у меня есть простой спрайт, выполняющий функцию кнопки, имеющей часть graphics.drawRectangle, рисующую простой прямоугольник. скажем, шириной 500 пикселей. Но когда я отслеживаю ширину этой кнопки, она всегда примерно на 10% больше. Откуда эти 10%?
Я читал о вызове validateNow (). Но это только для ярлыков или флажков. По какой-то причине я не могу получить доступ к библиотеке для Label. Это должно как-то работать с TextFields. Но как?
// this function is part of MyButtonClass.as file
function drawButton()
{
this.graphics.clear();
this.graphics.beginFill( currentBackColor);
this.graphics.drawRoundRect(0, 0, int(this.buttonWidth)+20, 30, 10, 10);
this.graphics.endFill();
}
// this code is in main action code frame
// the buttonWidth is set this way
stage.addEventListener( Event.RESIZE, updateBtn);
function updateBtn( event:Event)
{
// access the container in which the buttons are in like ...
for( var i = 0; i < buttonContainer.numChildren; i++) {
var btn = buttonContainer.getChildAt( i) as MyButtonClass;
// MyButtonClass is the class which extends from Sprite drawing my button
// and using buttonWidth to draw the backgrounds width.
btn.setButtonWidth( (stage.stageWidth / 2) - 20);
// i set half of stageWidth because i have two columns with a list of buttons
// after setButtonWidth is called in MyButtonClass, the draw function is called
// which does the graphics stuff above.
}
}
this.buttonWidth имеет значение 500. На этом спрайте ничего особенного не делается. Не нужно добавлять детей, только этот материал для рисования. Но это устанавливает ширину спрайта в 550 или что-то в этом роде.