Попытка передать TextFormat в другие классы, получая ошибку - PullRequest
0 голосов
/ 17 ноября 2009

Всем счастливого вторника :) 1001 * Я заметил, что снова использовал одни и те же шрифты в нескольких своих подклассах, поэтому я решил, что просто создаю класс шрифтов для обработки всех этих. В любом случае, я ломаю голову над тем, как аккуратно поместить те текстовые форматы, созданные в моем классе шрифтов , в другие мои классы. Я не верю, что делаю это правильно, но в настоящее время я получаю сообщение об ошибке: footFont = null Ошибка типа: Ошибка № 2007: Формат параметра должен быть ненулевым. Я хочу передать текстовый формат avant97 в мой класс фреймов для стилизации текста нижнего колонтитула Ниже приведен мой класс шрифтов.

package src.model 
{
    import flash.text.*;

    public class Fonts
    {
        public static var data:Object = {};
        public static var avant97 = new TextFormat(); // Footer copy
        public static var avantFF = new TextFormat(); // Navigation Copy
        public static var avant0s = new TextFormat(); // Thumbnail Titles

        avant97.font  = (new AvantGrande() as Font).fontName;
        avant97.size  = 16;
        avant97.color = 0x979797;
        avant97.align = TextFormatAlign.CENTER;

        avantFF.font  = (new AvantGrande() as Font).fontName;
        avantFF.size  = 16;
        avantFF.color = 0xFFFFFF;
        avantFF.align = TextFormatAlign.CENTER;

        avant00.font  = (new AvantGrande() as Font).fontName;
        avant00.size  = 16;
        avant00.bold  = true;
        avant00.color = 0x000000;
        avant00.align = TextFormatAlign.LEFT;
    }

}

alt text


Вот мой класс Frame, где я пытаюсь присоединить avant97 к TextField:

package src.display{

import flash.text.*;
import flash.display.*;
import flash.geom.Matrix;
import flash.events.Event;

// ☼ --- Imported Classes
import src.events.CustomEvent;
import src.model.Fonts;

public class Frame extends Sprite {

    private var footer:Sprite = new Sprite();
    private var fnt:Fonts; // <- var for Fonts Class
    private var footFont:TextFormat; // var to hold avant97

    // ☼ --- Constructor
    public function Frame():void {
        this.addEventListener(Event.ADDED_TO_STAGE, init);
    }

    // ☼ --- Init
    public function init():void {

        fnt = new Fonts(); // init the Fonts class
        //fnt.data.avant97 = footFont; // trying to get avant97
        Fonts.data.avant97 = footFont;  // Changed per 1st answer
        trace("footFont = "+footFont); // Fail

        footer.graphics.beginFill(0x000);
        footer.graphics.drawRect(0,0,800,56);
        footer.graphics.endFill();
        footer.y = stage.stageHeight - footer.height;

        var footText:TextField = new TextField();
        footText.defaultTextFormat = footFont; // Fail x 2!
        footText.antiAliasType = flash.text.AntiAliasType.NORMAL;
        footText.selectable = false;
        footText.mouseEnabled = false;
        footText.wordWrap = true;
        footText.width = 800;
        footText.height = 30;
        footText.text = footCopy;

        // ☼ --- Place Footer & Copy
        footer.addChild(footText);

        addChild(footer);

        trace("Frame added --- √"+"\r");
        this.removeEventListener(Event.ADDED_TO_STAGE, init);
    }

}

}

По сути, я получил [идею для статического объекта данных var отсюда] [2] Но, может быть, его пример работает только для реальных данных? Не текстовые форматы?

Это ошибка, которую я получаю еще раз: footFont = null Ошибка типа: Ошибка № 2007: Формат параметра должен быть ненулевым.

Ответы [ 2 ]

2 голосов
/ 17 ноября 2009

Если вы просто пытаетесь отделить текстовые форматы от других кодов, вы должны думать о своем классе Fonts как о «статическом» (создавать его не нужно). На все методы и свойства класса Fonts будут ссылаться как Fonts.method () Fonts.property.

private footFont : TextFormat = Fonts.avant97;

Следует отметить, что вам НЕ НУЖНО создавать копию avant97, если вы не собираетесь редактировать ее свойства. Вы можете просто использовать Fonts.avant97 вместо footFont.

1 голос
/ 17 ноября 2009

Измените fnt.data на Fonts.data, потому что это статическая переменная

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