この問題はとても単純に思えるので、私は気が狂いそうになります。コードで作成されたテキスト フィールドにテキスト フォーマットを適用しようとしていますが、テキストが変更されてもテキスト フィールドにフォーマットが適用されたままになります。次のコードは、未加工の AS3 で期待どおりに機能します。これらの例をできるだけ単純化するために分解しました。
package
{
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFormat;
public class Testing extends Sprite
{
public function Testing()
{
var tf:TextField = new TextField();
addChild(tf);
tf.border = true;
var tfor:TextFormat = new TextFormat();
tfor.align = 'right';
tfor.size = 30;
tf.defaultTextFormat = tfor;
tf.text = 'Testing';
}
}
}
ただし、Flex の同様のコードは同じように動作しません。次のコードでは、テキストが正しくフォーマットされません。
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
creationComplete="_create(event)">
<fx:Script>
<![CDATA[
import mx.core.UITextField;
import mx.events.FlexEvent;
protected function _create(event:FlexEvent):void
{
var tf:UITextField = new UITextField();
ui.addChild(tf);
tf.border = true;
var tfor:TextFormat = new TextFormat();
tfor.align = 'right';
tfor.size = 30;
tf.defaultTextFormat = tfor;
tf.text = 'Testing';
}
]]>
</fx:Script>
<mx:UIComponent id="ui" width="100%" height="100%" />
</s:Application>
Flex コンポーネントをテキスト フィールドとして使用し、その上に書式を貼り付けることができることはわかっていますが、このコードは以前に作成したコードとうまく連携させる必要があります。事前にご協力いただきありがとうございます。