Flex でいくつかの古い DOS またはメインフレーム端末のエミュレーションを行う必要があります。例えば下の画像のようなもの。
テキストの色を変更するのは簡単ですが、黄色の背景など、背景色を変更する機能は、標準の Flash テキストの機能を超えています。
また、特定の場所にテキストを入力し、「ターミナル」でテキストをスクロールできる必要がある場合もあります。これをどのように攻撃するか考えていますか?またはさらに良いことに、この種の既存のコード/コンポーネントはありますか?
Flex でいくつかの古い DOS またはメインフレーム端末のエミュレーションを行う必要があります。例えば下の画像のようなもの。
テキストの色を変更するのは簡単ですが、黄色の背景など、背景色を変更する機能は、標準の Flash テキストの機能を超えています。
また、特定の場所にテキストを入力し、「ターミナル」でテキストをスクロールできる必要がある場合もあります。これをどのように攻撃するか考えていますか?またはさらに良いことに、この種の既存のコード/コンポーネントはありますか?
TextField.getCharBoundaries
背景が必要な領域の最初と最後の文字の四角形を取得するために使用します。これらの長方形から、領域全体にまたがる長方形を作成できます。Shape
これを使用して、テキスト フィールドの後ろに配置された背景、またはテキスト フィールドの親に背景を描画します。
例を求めた更新、文字の範囲から四角形を取得する方法は次のとおりです。
var firstCharBounds : Rectangle = textField.getCharBoundaries(firstCharIndex);
var lastCharBounds : Rectangle = textField.getCharBoundaries(lastCharIndex);
var rangeBounds : Rectangle = new Rectangle();
rangeBounds.topLeft = firstCharBounds.topLeft;
rangeBounds.bottomRight = lastCharBounds.bottomRight;
行全体の長方形を見つけたい場合は、代わりにこれを行うことができます:
var charBounds : Rectangle = textField.getCharBoundaries(textField.getLineOffset(lineNumber));
var lineBounds : Rectangle = new Rectangle(0, charBounds.y, textField.width, firstCharBounds.height);
背景をペイントするテキスト範囲の境界がある場合、テキスト フィールドの親のメソッドでこれを行うことができますupdateDisplayList
(テキスト フィールドが [0, 0] に配置され、白いテキストがあり、これtextRangesWithYellowBackground
は、黄色の背景を持つテキスト範囲を表す四角形の配列です):
graphics.clear();
// this draws the black background
graphics.beginFill(0x000000);
graphics.drawRect(0, 0, textField.width, textField.height);
graphics.endFill();
// this draws yellow text backgrounds
for each ( var r : Rectangle in textRangesWithYellowBackground )
graphics.beginFill(0xFFFF00);
graphics.drawRect(r.x, r.y, r.width, r.height);
graphics.endFill();
}
フォントは幅と高さが固定されているため、背景のビットマップを動的に作成することは難しくなく、おそらく最も迅速かつ簡単な解決策です。実際、サイズを正しく設定すると、文字ごとに 1 つのストレッチ ピクセルしかありません。
文字の背景に応じてピクセル (またはピクセル) に色を付けます。
-アダム