fc2ブログ
WEBマスター目指して日々勉強!!
page top
[papervision3d] ベクターテキスト(Text3D)で任意のフォントを使用する
CATEGORY/papervision3d
papervision3dではベクターテキストを使用することができるが
デフォルトで使用できるフォントは、下記に限られる。

・HelveticaBold
・HelveticaLight
・HelveticaMedium
・HelveticaRoman


まず前提として
下記のクラスでText3Dを使用できること確認。

-------------------------------------------------------------------
package {
    import flash.events.*;
    import flash.utils.*;
    import org.papervision3d.materials.*;
    import org.papervision3d.materials.special.*;
    import org.papervision3d.typography.fonts.*;
    import org.papervision3d.typography.*;
    import org.papervision3d.view.*;
    public class Main extends BasicView {
        public function Main():void {
            //マテリアルを作成
            var material:Letter3DMaterial = new Letter3DMaterial(0x006699);
            material.doubleSided = true;
           
            //ベクターテキストを作成
            var font:HelveticaBold = new HelveticaBold(); //ここで表示するフォントの種類を設定
            var text3D:Text3D = new Text3D("Papervision3D World", font, material);

            scene.addChild(text3D);
           
            startRendering();
        }
    }
}
-------------------------------------------------------------------

「var font:HelveticaBold = new HelveticaBold()」の部分でフォントを変えられるわけです。


そこで、任意のフォントをベクターテキストにする方法をメモる。
大きな手順として、下記の工程を行う。


●ベクターテキストに使用したいフォントをクラスファイル(.as)にする
●フォントをクラスファイルを編集
●実行するasを作成



では具体的に見ていこう
(1) FIVe3D(http://five3d.mathieu-badimon.com/)のサイトから「Make a new typography file」をダウンロードし解凍
(2) 解凍した「Make a new typography file.swf」をWindowSWFフォルダ内
「C:\Users\XXXXX\AppData\Local\Adobe\Flash CS3\ja\Configuration\WindowSWF」(vista)に入れる
(3) FLASH(CS3で確認)を再起動
(4) 新規ドキュメント作成、保存
(5) ウィンドウ>その他のパネル>Make a new typography fileを開く
(6) 任意のフォントを選択
(7) 日本語を使いたい場合は、Manual selectionにチェックをし
 テキストエリアに表示したい日本語ほタイプする
(8) Meyrio.asファイルを生成 ※今回はメイリオを表示してみます。(保存した.flaとどう階層に保存されます)
(9) 生成されたクラスファイルを、クラスパスの直下「クラスパス/five3D/typography」に入れる
(10) Meyrio.asを編集(太字を編集)

■Meyrio.as
-------------------------------------------------------------------------------
package five3D.typography {

    import org.papervision3d.typography.Font3D;
   
    public class Meyrio extends Font3D{

        static public var __motifs:Object = {};
        static public var __widths:Object = {};
        static public var __heights:Number = 150;
        static public var __initialized:Boolean = false;

        static public function initialize():void {
            initializeMotifs();
            initializeWidths();
            __initialized = true;
        }

        static private function initializeMotifs():void {
            ...
            ...
            ...
        }

        static private function initializeWidths():void {
            ...
            ...
            ...
        }
       
        override public function get motifs():Object{
          if(!__initialized)initialize();
          return __motifs;
        }

        override public function get widths():Object{
          if(!__initialized)initialize();
          return __widths;
        }

        override public function get height():Number{
          if(!__initialized)initialize();
          return __heights;
        }


    }

}
-------------------------------------------------------------------------------

(11) そしてメインのクラス内で実行すればOK。

■main.as(ドキュメントクラス)
-------------------------------------------------------------------------------
package {
    import flash.events.*
    import five3D.typography.Meyrio;
    import org.papervision3d.typography.Text3D;
    import org.papervision3d.view.BasicView;
    import org.papervision3d.typography.Font3D;
    import org.papervision3d.materials.special.Letter3DMaterial;
    public class Main extends BasicView {
        private var text3D:Text3D;
        private var textMaterial:Letter3DMaterial;
        public function Main():void {
            initText();
            startRendering();
        }
        private function initText():void {
            var meyrio:Meyrio = new Meyrio();
            textMaterial = new Letter3DMaterial(0xFFFFFF,1);
            textMaterial.doubleSided = true;
            text3D = new Text3D("あいうえお", meyrio, textMaterial);
            scene.addChild(text3D);
        }
        override protected function onRenderTick(e:Event = null):void {
            super.onRenderTick(e);
            text3D.yaw(0.8);
        }
    }
}
-------------------------------------------------------------------------------


今回はサンプルSWFを作りました

>>[DEMO] pv3d Flve3d Text3D 任意のフォント表示



スポンサーサイト




コメントの投稿

管理者にだけ表示を許可する


トラックバック
トラックバック URL

© WEB-WORKMAN. all rights reserved.
Page top
FC2 BLOG