Ошибка Flash / Flex 1067: невозможно создать пользовательский объект TextFormat? - PullRequest
0 голосов
/ 24 июня 2009

Поскольку я хочу избежать повторяющегося кода и использую много текстовых форматов, я создал класс CustomTextFormat во Flex Builder.

Другой класс, называемый CustomInputBox.as, использует этот объект для создания формата:

package
{
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.text.TextFieldType;

    public class CustomInputBox extends Sprite
    {
        public function CustomInputBox(xLoc:int, yLoc:int, width:uint, height:uint, password:Boolean = false, text:String = "", font:String = "Arial", fontColor:uint = 0x000000, fontSize:uint = 18, fontBold:Boolean = false)
        {
            var inputBox:TextField = new TextField();
            inputBox.type = TextFieldType.INPUT;
            inputBox.mouseEnabled = true;
            inputBox.selectable = true;
            inputBox.multiline = false;
            inputBox.x = xLoc;
            inputBox.y = yLoc;
            inputBox.width = width;
            inputBox.height = height;
            inputBox.displayAsPassword = password;
            var format:CustomTextFormat = new CustomTextFormat();
            inputBox.defaultTextFormat = format;
            inputBox.text = text;
            addChild(inputBox);
        }
    }
}

Код CustomTextFormat выглядит следующим образом:

package
{
    import flash.display.Sprite;
    import flash.text.TextFormat;
    import flash.text.TextFormatAlign;

    public class CustomTextFormat extends Sprite
    {
        public function CustomTextFormat(font:String = "Arial", fontColor:uint = 0x000000, fontSize:uint = 18, fontBold:Boolean = false, fontAlign:String = TextFormatAlign.LEFT)
        {
            var format:TextFormat = new TextFormat();
            format.font = font;
            format.color = fontColor;
            format.size = fontSize;
            format.bold = fontBold;
            format.align = fontAlign;
        }
    }
}

Теперь я получаю сообщение об ошибке 1067 в файле CustomInputBox.as, к сожалению, это голландская ошибка (есть ли способ установить ошибки Flex на английский?):

1067: Impliciete afgedwongen omzetting van een waarde van het type CustomTextFormat в формате een niet-gerelateerd flash.text: TextFormat. CustomInputBox.as

Трудно перевести, но, надеюсь, номера ошибки и кода достаточно, чтобы определить мою проблему. Я новичок во Flash, и искал, но не смог выяснить, что я делаю неправильно.

Заранее спасибо.

1 Ответ

1 голос
/ 24 июня 2009

Здесь что-то странное. Если вы хотите назначить свой пользовательский формат следующим образом:

var format:CustomTextFormat = new CustomTextFormat();
inputBox.defaultTextFormat = format;

Затем CustomTextFormat необходимо расширить TextFormat, а код в конструкторе CustomTextFormat должен изменять унаследованные свойства TF. В качестве альтернативы, если вы хотите оставить CustomTextFormat, расширяющий Sprite, то вам нужно изменить свойство «format» CustomTextFormat, чтобы оно было общедоступным, и изменить свое назначение на что-то вроде:

var customFormat:CustomTextFormat = new CustomTextFormat();
inputBox.defaultTextFormat = customFormat.format;

Это имеет смысл? Прямо сейчас вы пытаетесь установить формат ввода по умолчанию для объекта класса, который расширяет Sprite. И inputBox ничего не знает о внутреннем свойстве «формата» CustomTextFormat, которое является как частным, так и временным.

(Между прочим, ничто из этого точно не объясняет сообщение об ошибке, которое вы получаете, но, по моему опыту, ошибки компилятора Flash несколько редко действительно говорят вам, что не так ... они склонны требовать вас ' Я использую классы нелегально, когда все, что вы сделали, это пропустите точку с запятой. Я склонен не слишком доверять сообщениям об ошибках.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...