2011-06-26 10 views
2

コードで入力モードに設定されたAS3 TextFieldを作成しますが、ユーザーがいくつかの特殊文字(たとえばáàéííòòúùç)を入力しようとすると、単に表示されませんTextInputでAS3テキスト入力アクセント

テキストフィールドにコピーして貼り付けることはできますが、ユーザーが直接入力できるのであれば好きです。ここで

はこれを証明する簡単なテストです:

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

    public class TextInput extends Sprite 
    { 
     public function TextInput() 
     { 
      super(); 

      var t:TextField = new TextField; 
      t.type = TextFieldType.INPUT; 
      addChild(t); 
     } 
    } 
} 

これは、ユーザーが入力できるテキストフィールドを作成しますが、私は、àなどの特殊文字を入力することはできません。

多くのありがとうございます。

+2

テキストフィールドにコピーして貼り付けると、フォント埋め込みの問題ではないので、そこに特殊文字を入力するだけで人が止まることはありません。私は速いテストをしたし、それは私にとっては良かった。あなたはより多くの情報を与えることができますか? – divillysausages

+0

「彼らは単にTextInputに表示されません」と言っても、入力すると何も起こりません(TextInputに文字が追加されません)。それとも、代わりに奇妙なキャラクターを手に入れていますか? TextInputの 'restrict'プロパティを使用していますか? – bmleite

+0

私はrestrictプロパティを使用していません。ここで簡単なテストとポストコードを書いてみましょう。 –

答えて

3

[入力]フィールドに貼り付けることができる場合は、入力する必要があります。

あなたは上記の次の設定で、ステージ上の入力テキストフィールドを作成しているのと同じフォントを使用して、新しいFlashドキュメントを起動する場合:

埋め込み、通常のグリフ enter image description here

埋め込み拡張ラテングリフenter image description here

そして、これがよう、動作するはずです: enter image description here

これがうまくいけば、クラスの記述方法と関係があるかもしれません。

フォントを埋め込んだクラスを書くことは、率直にも苦痛です。あなたは、ライブラリにフォントを埋め込むことを確認して、アクションスクリプトのためにそれをエクスポートします、あなたは次のコードを使用する必要があることに続き

enter image description here

// The name of the font class 
var _font:Calibri = new Calibri(); 

var _textFormat:TextFormat = new TextFormat(); 
_textFormat.font = _font.fontName; 
_textFormat.size = 16; 

// For some weird reason the ordering here is important. I remember mucking around with this for ages for an old project. EmbedFonts must come last 
var _textField:TextField = new TextField(); 
_textField.defaultTextFormat = _textFormat; 
_textField.type = TextFieldType.INPUT; 
_textField.embedFonts = true; 

addChild(_textField); 

をそしてそれは、すべての作業を、それを持っている必要があります:FlashDeveloを使用したものに

enter image description here

** EDIT ** P、などあなたが次のメソッドを使用することができます

public class Main extends MovieClip { 

    [Embed(source='assets/HOBOSTD.OTF', fontName='_hobo', embedAsCFF="false")] public static const HOBO:Class; 

    public function Main() { 
     var _font:Font = new HOBO() as Font; 

     var _textFormat:TextFormat = new TextFormat(); 
     _textFormat.font = _font.fontName; 
     _textFormat.size = 22; 

      var _textField:TextField = new TextField(); 

     _textField.embedFonts = true; 
     _textField.defaultTextFormat = _textFormat; 
     _textField.autoSize = TextFieldAutoSize.LEFT; 
     _textField.antiAliasType = AntiAliasType.ADVANCED; 
     _textField.type = TextFieldType.INPUT; 

     addChild(_textField); 
    } 
} 

をそして、あなたは以下を取得します:

enter image description here

今、あなたのプロジェクトに関連し、またはソースのいずれかのフォントファイルでなければなりません、注意してくださいあなたが選択した場合、C:\ windows \ fontフォルダを指すことができます。上記の例では、フォントをmy assetsフォルダにコピーしました。

+0

私はFlash CSXを使用していません.Pure Actionscript 3プロジェクトを使用しています(私はFlashBuilderを使用していますが、FlashDevelopで作成することもできます)。一般的な埋め込みを使用してフォントを埋め込むこともできません。とにかく[Embed]メタタグを使ってそれらのグリフを埋め込む? –

+0

私はこれをリフレクションするように編集しました – Chris

+0

私のためには機能しませんが、一部のWindowsユーザーはそれを動作させることができます。 –

関連する問題