In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

欧文と日本語表示をText Layout Frameworkで試す on 2010-3-14 [TLF]

Text Layout Framework Test02
** 欧文と日本語の違いの実験。それとTextLayoutTextLineFactoryについての試し。
** 欧文が綺麗に揃わないので欧文泣き別れにして収めてみた(組版的には問題だが)
** 各所のコメントアウトは色々試した結果なので気にせず。
** reference--------
** http://quotations.livedoor.biz/archives/51355581.html(アインシュタインの相対性に関する英語の名言)
** http://help.adobe.com/ja_JP/AS3LCR/Flash_10.0/index.html (Adobe)
/* auther--------
** more_more_for
/**
 * Copyright more_more_for ( http://wonderfl.net/user/more_more_for )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/bKmH
 */

/* Text Layout Framework Test02
** 欧文と日本語の違いの実験。それとTextLayoutTextLineFactoryについての試し。
** 欧文が綺麗に揃わないので欧文泣き別れにして収めてみた(組版的には問題だが)
** 各所のコメントアウトは色々試した結果なので気にせず。
	** reference--------
	** http://quotations.livedoor.biz/archives/51355581.html(アインシュタインの相対性に関する英語の名言)
	** http://help.adobe.com/ja_JP/AS3LCR/Flash_10.0/index.html (Adobe)
	/* auther--------
	** more_more_for
	*/
package
{
    import flash.display.Sprite;
    import flash.display.DisplayObject;
    import flash.geom.Rectangle;
    import flash.text.engine.TextLine;
    import flash.text.engine.JustificationStyle;
    import flash.text.engine.Kerning
    import flash.text.engine.BreakOpportunity;
    import caurina.transitions.Tweener;
    
    import flashx.textLayout.elements.ParagraphElement;
    import flashx.textLayout.elements.SpanElement;
    import flashx.textLayout.elements.TextFlow;
    import flashx.textLayout.factory.TextFlowTextLineFactory;
    import flashx.textLayout.formats.TextLayoutFormat;
    import flashx.textLayout.formats.JustificationRule;
    import flashx.textLayout.formats.BlockProgression;
    import flashx.textLayout.formats.TextAlign;
    import flashx.textLayout.formats.LineBreak;
    import flashx.textLayout.formats.TextJustify;

    public class TextFlowTextLineFactory_example extends Sprite
    {
    	private var _txtFormat:TextLayoutFormat;
    	private var _txtFormatJ:TextLayoutFormat;
    	private var _factory:TextFlowTextLineFactory;
    	private var _txtFlow:TextFlow;
    	private var _paragraphEl:ParagraphElement;
    	private var _spanEl:SpanElement;
    	
        public function TextFlowTextLineFactory_example()
        {
        	//背景設定
        	graphics.beginFill(0x330000,0.8);
            graphics.drawRect( 0, 0, 465, 465 );
            graphics.endFill();
            graphics.beginFill(0xFFFFFF,0.1);
            graphics.drawRect( 60, 65, 350, 144 );
            graphics.endFill();
        	
        	//テキストのフォーマットを設定
        	//英文
        	_txtFormat = new TextLayoutFormat();
            _txtFormat.fontFamily = "Times new roman, _sans";
            _txtFormat.fontSize = 24;
            _txtFormat.color = 0xFFFFFF;
            _txtFormat.locale = "en";
            _txtFormat.textAlpha = 0.8;
            _txtFormat.textAlign = TextAlign.JUSTIFY;
            //_txtFormat.lineBreak = LineBreak.TO_FIT;
            _txtFormat.justificationRule = JustificationRule.SPACE;
            _txtFormat.kerning = Kerning.ON;
            //_txtFormat.textJustify = TextJustify.DISTRIBUTE;
            _txtFormat.breakOpportunity = BreakOpportunity.ANY;
            //_txtFormat.justificationStyle = JustificationStyle.PUSH_IN_KINSOKU; PRIORITIZE_LEAST_ADJUSTMENT PUSH_OUT_ONLY
            //日本語
            _txtFormatJ = new TextLayoutFormat();
            _txtFormatJ.fontFamily = "Kozuka Mincho Pro M";
            _txtFormatJ.fontSize = 14;
            _txtFormatJ.lineHeight = 23;
            _txtFormatJ.color = 0xFFFFFF;
            _txtFormatJ.textAlpha = 0.9;
            _txtFormatJ.locale = "ja";
            _txtFormatJ.textAlign = TextAlign.JUSTIFY;
            _txtFormatJ.justificationRule = JustificationRule.EAST_ASIAN;
            _txtFormatJ.justificationStyle = JustificationStyle.PUSH_IN_KINSOKU;
            //_txtFormatJ.blockProgression = BlockProgression.RL;
            
            //TextLineFactoryを設定
            _factory = new TextFlowTextLineFactory();
            _factory.compositionBounds = new Rectangle( 60, 65, 350, 360 );
            
            //TextFlowを設定
            _txtFlow = new TextFlow();
            
            //paragraphElementを設定
            _paragraphEl = new ParagraphElement();
            
            //SpanElementを設定
            _spanEl = new SpanElement();
            _spanEl.text = "When you sit with a nice girl for two hours,you think it's only a minute.But when you sit on a hot stove for a minute,you think it's two hours. That's relativity. —— Albert Einstein";            
            _spanEl.format = _txtFormat;
            
            //英文を追加
            _paragraphEl.addChild( _spanEl ); 
            _txtFlow.addChild( _paragraphEl );
            _factory.createTextLines( useTextLines, _txtFlow );
            
            //日本語訳を追加
            _factory.compositionBounds = new Rectangle( 60, 265, 364, 200 );
            _spanEl.format = _txtFormatJ;
            _spanEl.text = "2時間可愛い女の子と一緒に座っていたら、たった1分くらいに感じるだろう。でも、熱いコンロの上に1分間座ったら、それは2時間に感じられる。それが相対性だ。\n —— アルベルト・アインシュタイン"
            _factory.createTextLines( useTextLines, _txtFlow );
            
            var mov:DisplayObject = this.getChildAt(8)
            mov.x = 195;
            mov.y = 450;
            mov.alpha = 0;
            
            tweenObj(mov);
        }
        
        public function tweenObj(obj:DisplayObject):void{
        	var _obj = obj;
        	Tweener.addTween(_obj, {y:339+19, alpha:1, time:1, delay:0.1, transition:"easeOutCubic"}); 
        }
        
        private function useTextLines( lineOrShape:DisplayObject ):void
        {
            this.addChild( lineOrShape );
        }
        
    }
}