"銀河鉄道の夜”をText Layout Frameworkで縦組みする on 2010-3-15
Text Layout Framework Test02
** 縦組みの実験。XMLとそうではない方法の連携実験。
** リンクも実験。
** 各所のコメントアウトは色々試した結果なので気にせず。
** reference--------
** http://www.aozora.gr.jp/cards/000081/files/43737_19215.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/9aAn
*/
/* Text Layout Framework Test02
** 縦組みの実験。XMLとそうではない方法の連携実験。
** リンクも実験。
** 各所のコメントアウトは色々試した結果なので気にせず。
** reference--------
** http://www.aozora.gr.jp/cards/000081/files/43737_19215.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.events.Event;
import flash.text.engine.JustificationStyle;
import flash.text.engine.TextLine;
import flashx.textLayout.container.ContainerController;
import flashx.textLayout.conversion.TextConverter;
import flashx.textLayout.elements.Configuration;
import flashx.textLayout.elements.LinkElement;
import flashx.textLayout.elements.ParagraphElement;
import flashx.textLayout.elements.SpanElement;
import flashx.textLayout.elements.TextFlow;
import flashx.textLayout.factory.TextFlowTextLineFactory;
import flashx.textLayout.formats.BlockProgression;
import flashx.textLayout.formats.JustificationRule;
import flashx.textLayout.formats.TextAlign;
import flashx.textLayout.formats.TextLayoutFormat;
public class Configuration_example extends Sprite
{
private var _bgContainer:Sprite;
private var _txtContainer:Sprite;
private var _config:Configuration;
private var _txtLayoutFormat:TextLayoutFormat;
private var _factory:TextFlowTextLineFactory;
private var _txtFlow:TextFlow;
private var _paragraphEl:ParagraphElement;
private var _spanEl:SpanElement;
public function Configuration_example()
{
if(stage) init();
else this.addEventListener(Event.ADDED_TO_STAGE, init);
}
public function init():void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
//コンテナー設定
_bgContainer = new Sprite();
_bgContainer.graphics.beginFill(0xCCCCEE);
_bgContainer.graphics.drawRect(0,0,465,465);
_bgContainer.graphics.endFill();
this.addChild(_bgContainer);
_txtContainer = new Sprite();
_txtContainer.x = -5;
_txtContainer.y = 8;
_bgContainer.addChild(_txtContainer);
//テキストのフォーマットを設定
_config = new Configuration();
_txtLayoutFormat = new TextLayoutFormat();
_txtLayoutFormat.fontFamily = "Hiragino Mincho Pro M";
_txtLayoutFormat.fontSize = 10;
_txtLayoutFormat.locale = "ja";
_txtLayoutFormat.color = 0x333333;
_txtLayoutFormat.textAlign = TextAlign.JUSTIFY;
_txtLayoutFormat.textAlignLast = TextAlign.LEFT;
_txtLayoutFormat.justificationRule = JustificationRule.EAST_ASIAN;
_txtLayoutFormat.justificationStyle = JustificationStyle.PUSH_IN_KINSOKU;
_txtLayoutFormat.blockProgression = BlockProgression.RL;
_config.textFlowInitialFormat = _txtLayoutFormat;
/*//リンク設定(Normal)
var linkNormalFormat:TextLayoutFormat = new TextLayoutFormat();
linkNormalFormat.color = 0xFFFFFF;
linkNormalFormat.textDecoration = TextDecoration.UNDERLINE;
_config.defaultLinkNormalFormat = linkNormalFormat;
//リンク設定(selection)
var selectionFormat:SelectionFormat = new SelectionFormat(0xFFFFFF);
_config.focusedSelectionFormat = selectionFormat;*/
//TextFlowを設定
_txtFlow = new TextFlow(_config);
/*var selectionManager:SelectionManager = new SelectionManager();
_txtFlow.interactionManager = selectionManager;*/
//テキスト内容
var markup:String = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<flow:TextFlow xmlns:flow=\"http://ns.adobe.com/textLayout/2008\" verticalScrollPolicy=\"auto\" horizontalScrollPolicy=\"auto\" editingMode=\"readWrite\" lineHeight='20' textIndent=\"11\" marginBottom=\"15\" paddingTop=\"4\" paddingLeft=\"4\">"+
"<flow:p fontSize='16' fontWeight='bold' textIndent='50' lineHeight='200%'>"+
"<flow:span>六 銀河(ぎんが)ステーション</flow:span>"+
"</flow:p>"+
"<flow:p>"+
"<flow:span id='span1'>そしてジョバンニはすぐうしろの天気輪(てんきりん)の柱(はしら)がいつかぼんやりした三角標(さんかくひょう)の形になって、しばらく蛍(ほたる)のように、ぺかぺか消(き)えたりともったりしているのを見ました。それはだんだんはっきりして、とうとうりんとうごかないようになり、濃(こ)い鋼青(はがね)のそらの野原にたちました。いま新しく灼(や)いたばかりの青い鋼(はがね)の板(いた)のような、そらの野原に、まっすぐにすきっと立ったのです。</flow:span>"+
"</flow:p>"+
"<flow:p>"+
"<flow:span id='span2'>するとどこかで、ふしぎな声が、銀河(ぎんが)ステーション、銀河(ぎんが)ステーションと言(い)う声がしたと思うと、いきなり眼(め)の前が、ぱっと明るくなって、まるで億万(おくまん)の蛍烏賊(ほたるいか)の火を一ぺんに化石(かせき)させて、そらじゅうに沈(しず)めたというぐあい、またダイアモンド会社で、ねだんがやすくならないために、わざと穫(と)れないふりをして、かくしておいた金剛石(こんごうせき)を、誰(だれ)かがいきなりひっくりかえして、ばらまいたというふうに、眼(め)の前がさあっと明るくなって、ジョバンニは、思わず何べんも眼(め)をこすってしまいました。</flow:span>"+
"</flow:p>"+
"<flow:p>"+
"<flow:span id='span3'>気がついてみると、さっきから、ごとごとごとごと、ジョバンニの乗(の)っている小さな列車(れっしゃ)が走りつづけていたのでした。ほんとうにジョバンニは、夜の軽便鉄道(けいべんてつどう)の、小さな黄いろの電燈(でんとう)のならんだ車室に、窓(まど)から外を見ながらすわっていたのです。車室の中は、青い天鵞絨(ビロード)を張(は)った腰掛(こしか)けが、まるでがらあきで、向(む)こうの鼠(ねずみ)いろのワニスを塗(ぬ)った壁(かべ)には、真鍮(しんちゅう)の大きなぼたんが二つ光っているのでした。</flow:span>"+
"</flow:p>"+
"</flow:TextFlow>";
_txtFlow = TextConverter.importToFlow(markup, TextConverter.TEXT_LAYOUT_FORMAT);
//paragraphElementを設定
_paragraphEl = new ParagraphElement();
_spanEl = new SpanElement();
_spanEl.text = "銀河鉄道の夜 宮沢賢治";
_spanEl.color = 0x990000;
var link:LinkElement = new LinkElement();
link.href = "http://www.aozora.gr.jp/cards/000081/files/43737_19215.html";
link.addChild(_spanEl);
_paragraphEl.addChild(link);
_txtFlow.addChild(_paragraphEl);
_txtFlow.hostFormat = _txtLayoutFormat;
var containerController:ContainerController = new ContainerController(_txtContainer, 450, 440);
_txtFlow.flowComposer.addController(containerController);
_txtFlow.flowComposer.updateAllControllers();
}
}
}