【Flash Player 10】

Text Layout Framework, Flashで縦書きレイアウト

Actionscript3 Flash CS4

Text Layout Framework を使って「縦書き」文章レイアウトを行いました。

文章は青空文庫の北大路魯山人作「若鮎について」を使わせていただきました。

Text Layout Framework を使うと Flash 上の文章をHTML+CSSのように手軽に操れることも分かってきました。
あるいはJavascriptのようにDOM操作もできるようです。

これはFlashにとってすばらしい出来事です。
CS5が登場し、この Text Layout Framework から早く Betaがとれることを願わずにはいられません。

Sample File
Textlayout Frame Work – 縦書き
*Flash Player 10以上が必要です。

import flash.text.engine.FontLookup;
import flash.text.engine.FontWeight;
 
import flashx.textLayout.container.ContainerController;
import flashx.textLayout.edit.SelectionManager;
import flashx.textLayout.elements.DivElement;
import flashx.textLayout.elements.ParagraphElement;
import flashx.textLayout.elements.SpanElement;
import flashx.textLayout.elements.TextFlow;
import flashx.textLayout.formats.BlockProgression;
import flashx.textLayout.formats.Direction;
import flashx.textLayout.formats.TextAlign;
import flashx.textLayout.formats.BaselineOffset;
 
var xml:XML = <book>
	<author>北大路魯山人</author>
	<title>若鮎について</title>
 
	<body>
		<line>あゆの小さなものは、どうかするとうまくないというひともあるが、わたしは一概にそうは思わない。</line>
		<line>小田原の手前に酒匂川《さかわがわ》という川がある。まだ禁漁中にあの近辺のひとが酒匂川のあゆをよく盗み取りするが、わたしはそれをもらうことがあって、たびたび食ったことがある。大きさはまだやっと一寸ぐらいのものだが、ちょっとあぶって食うと、実に調子の高いうまさが舌になじむ。</line>
		<line>もっとも、最初東京にはいってくるものは、江州《ごうしゅう》地方でいわゆるあゆの飴煮《あめに》にするものであって、これはあまり美味なものではない。あゆは不思議な魚で、水勢のないところでは大きくならない。また同じ水勢であっても、水質や餌《えさ》の関係であろうか、川によって成長率が違う。一般に大きな川のあゆは大きくなり、小さな川のものは小さく育つようである。</line>
		<line>琵琶湖のあゆは非常に小さく、一年経っても若あゆ以上に大きくならない。大きくならないで一人前に子を持っている。昔は琵琶湖のあゆは他のあゆとはまったく種類が違うかと思われたが、その実、琵琶湖で生まれた子あゆが江州から石山などを通って宇治川へ落ちて出ると、立派に成長するらしい。それかあらぬか、琵琶湖で孵化《ふか》したあゆの稚魚を地方の渓流へ放流すると、通常のあゆ通り立派に成長することが分って、近来は諸所で盛んに放魚が行われているようだ。</line>
		<line>琵琶湖では、あゆの稚魚を茄《ゆ》でてひうおと呼んでいる。このひうおの大ぶりなのが飴煮にされて来るもので、琵琶湖にはほとんど無限といってよいほど発生する。それがこの頃では諸地方の大川へどしどし放流され、あゆの産出を全国的に増加させている。この点、あゆ党にとってはまことにありがたいことである。</line>
		<line>ところで、前述の琵琶湖産のひうおなるものは、なんといっても小さすぎるから、みた目の割合にうまくない。しかし、このひうおも川に出て成長してからは一人前のあゆの味を備え、やはりうまい。そこで、先の酒匂川の若あゆのことなども合わせて考えてみると、若あゆなるものは結局琵琶湖のひうおではあゆらしいうまさはないが、初めから河川で発生したものはちょっとぐらいでも、すでに立派な美食価値を持っている。いわば、それぞれの川の味をもっているのだ。</line>
	</body>
</book>;
 
// TextFlow
var flow:TextFlow = new TextFlow();
flow.color = 0x333333;
flow.fontSize = 14;
flow.lineHeight = 20;
flow.fontFamily = 'ヒラギノ明朝 Pro W3, メイリオ, MS P明朝, _serif';
flow.fontLookup = FontLookup.DEVICE;
flow.locale = "ja";
flow.direction = Direction.LTR;
flow.blockProgression = BlockProgression.RL;
flow.interactionManager = new SelectionManager();
 
// div
var div:DivElement = new DivElement();
flow.addChild(div);
 
// title
var titleP:ParagraphElement = new ParagraphElement();
var titleSpan:SpanElement = new SpanElement();
titleSpan.text = xml.title;
titleSpan.fontSize = 24;
titleSpan.color = 0x000000;
titleSpan.fontWeight = FontWeight.BOLD;
titleSpan.lineHeight = 48;
 
titleP.addChild(titleSpan);
div.addChild(titleP);
 
// author
var authorP:ParagraphElement = new ParagraphElement();
authorP.textAlign = TextAlign.END;
authorP.paragraphEndIndent = 100;
var authorSpan:SpanElement = new SpanElement();
authorSpan.text = xml.author;
authorSpan.fontSize = 18;
authorSpan.lineHeight = 36;
 
authorP.addChild(authorSpan);
div.addChild(authorP);
 
// body
var i:int = -1;
var limit:int = xml.body.line.length() -1;
for ( ;i++ < limit; )
{
	var p:ParagraphElement = new ParagraphElement();
	p.textIndent = 14;
	p.paddingRight = 100;
	var span:SpanElement = new SpanElement();
	span.text = xml.body.line[i];
 
	p.addChild(span);
	div.addChild(p);
	p = null;
	span = null;
}
 
var sprite:Sprite = new Sprite();
sprite.x = 10;
sprite.y = 10;
 
addChild(sprite);
 
flow.flowComposer.addController(new ContainerController(sprite, 780, 480));
flow.flowComposer.updateAllControllers();

Flash Builder Beta 2 + Flex SDK 4

Bookmark and Share

Text Layout Framework, はじめの一歩

Actionscript3 Flash CS4

Text Layout Framework
Flashの文字表示を驚くほど多種多様にコントロールできるText Layout Framework
細かく設定できるのはいいけど、同じ結果になるのにも何通りもの方法があるようです。ものにできるには少々覚悟が必要だと思います。

右往左往しながら使ってみたのですが、コアなClassがあるようです。

TextFlow
ヘルプによれば・・・

The TextFlow class is responsible for managing all the text content of a story. In TextLayout, text is stored in a hierarchical tree of elements. TextFlow is the root object of the element tree. All elements on the tree derive from the base class, FlowElement.

TextFlowがルートオブジェクトになるらしい。
なにはさておきTextFlowインスタンスを作るのが吉らしい。
まずはTextFilterを使ってインスタンスを作成。

でも、このTextFilterってAPIにのってないんだよなぁー。
のってるのはflashx.textLayout.conversion.TextConverter
プロパティとメソッドは同じようだけど・・・

import flashx.textLayout.elements.TextFlow;
import flashx.textLayout.conversion.TextFilter;
import flashx.textLayout.formats.BlockProgression;
import flashx.textLayout.factory.TextLineFactory;
import flash.geom.Rectangle;
import flash.text.engine.TextLine;
 
// TextFlowインスタンス作成
var flow:TextFlow = TextFilter.importToFlow("ここに文章を設定。今回はプレインタイプのテキスト。", TextFilter.PLAIN_TEXT_FORMAT);
// 縦書き
flow.blockProgression  = BlockProgression.RL;
// テキストブロック x:0, y:20, w:500, h:300
var bounds:Rectangle =  new Rectangle(0, 20, 500, 300);
// 出力
TextLineFactory.createTextLinesFromTextFlow(
	function (tl:TextLine):void {
		 addChild(tl);
	}
	, flow
	, bounds
);

縦書き文字が表示される。
初めの一歩としては、こんなものでしょうか。

font-maily, font-size, color…etc
など色々設定してみたい。

DOM操作するようにもっと細かな制御もしてみたい。
それはまた今度にしてみる。

良くわからないのは、TextFilterTextConverterに変えるとコンパイルエラーになっちゃう。

1046: 型が見つからないか、コンパイル時定数ではありません : ImportExportConfiguration。

発展途中のベータ版だし、しょうがないか。

追記
と、ココまで書いていて大事なことに気がついた。
Adobe Labs : http://labs.adobe.com/downloads/textlayout.html のFlash CS4 Componentが古いことに!
APIにないClassを使ったりするのはそのせいだった様子。

Extension Manager から Text Layout Flash Component 0.207.0を削除し textLayout.swc を使用するようにした。
上記コードを書き直した。

import flashx.textLayout.elements.TextFlow;
import flashx.textLayout.conversion.TextConverter;
import flashx.textLayout.factory.TextFlowTextLineFactory;
import flashx.textLayout.formats.BlockProgression;
 
import flash.display.DisplayObject;
import flash.geom.Rectangle;
 
// TextFlowインスタンス作成
var flow:TextFlow = TextConverter.importToFlow("ここに文章を設定。今回はプレインタイプのテキスト。", TextConverter.PLAIN_TEXT_FORMAT);
// 縦書き
flow.blockProgression  = BlockProgression.RL;
// TextFlowTextLineFactoryインスタンス作成
var factory:TextFlowTextLineFactory = new TextFlowTextLineFactory();
// テキストブロック x:0, y:20, w:500, h:300
factory.compositionBounds = new Rectangle(0,20,500,300);
// 出力
factory.createTextLines(
	function (d:DisplayObject):void {
		addChild(d);
	}
	, flow
);

こっちの方がコードがスッキリしてる。

Flash CS4 でTLFコンポーネントを使うやり方は一世代前の方法みたいだ、Flex SDKから textLayout.swc を取出して使うことにする。
Using the Text Layout Framework with Adobe Flash CS4 Professional
このリンク先の方法が◯ってことだね。

Adobe Labs にTLFコンポーネントへのリンクが残ってるのが間違いの元なんだよ。 :-(

update
CS4 を使い始めたばかりで誤解がありました。
.swc をパス指定で使用できるようになってたんですね。
必ずしも.mxpでコンポーネントをインストールしなくても良くなって、使い勝手は著しく向上しています。

CS3と同じようにに.mxpをインストールさせるタイプのものがあることも分かりました。

Bookmark and Share

ImageTone type Theremin Beta 1, Webcamが楽器に・・・

Actionscript3 News

先日(2009-12-26)の福岡てら子でお見せした音ものコンテンツの1つを公開します。

ImageTone type Theremin Beta 1

ImageTone type Theremin は Webcam を使い、映された手(指)をマウスがわりにコントローラにして音を出す楽器です。
画面右の赤い縦線を右手を使ってカメラの前で遮ると、音が鳴ります。
Webcamで撮影された画像は操作しやすいように反転させているので、鏡に映ったように見えています。
画面の高い位置で遮ると高い音が鳴ります。
低い位置だと低い音が鳴ります。

左の青い線を遮ると音色が変わります。

音の生成には SiON を使いました。

【使い方】
起動後Webcamを「許可」して下さい。
カメラ画像が表示されたら「スペースバー」を押すと「音」を鳴らすことができます。
カメラに映し出された手で「赤い線」を遮ると「音」が鳴ります。
「青い線」を遮ると、遮っている間音色が変わります。
もう一度「スペースバー」を押すと「音」を鳴らす処理が停止します。

背景が赤・オレンジ系・白の場所での使用はお控えください。
背景に反応し音が鳴りっぱなしに鳴る可能性があります。

手にうまく反応できない時は「Min」「Max」スライダーを操作して下さい。
「Min」「Max」スライダーはマウスで操作して下さい。
デフォルトは Min:10, Max:20 です。
Max を大きくすると反応が良くなります。
手以外でも反応しすぎる時はMinを大きくして下さい。

注意
まだまだ操作性には改善の余地が多いにあります。
オプティマイズもまだまだ途中です。
かなり負荷の高い処理が連続して走ります、ブラウザがハングアップしたり最悪の場合はシステムをも巻き込んで落ちてしまうかもしれません。
それでもチャレンジしてみようという心優しい方、お使いいただき使用感、バグリポート、改善要望などなどコメントとしてお聞かせください。

*Flash Player 10 + Webcam が必要です。
*ImageTone type Theremin Beta 1を再生することで起きたいかなるトラブルも保証できません。

ImageTone type Theremin Beta 1

再度お願いです。
感想などコメントで残していただけると助かります。 :-o

Bookmark and Share

Flashで縦書き・段組みだったらText Layout Framework

Actionscript3 Flash CS4

Adobe の Open Source プロジェクト【Text Layout Framework
Flashデザインのボトルネックだった文字表現を著しく向上させることができます。

次期 CS5 に搭載される Text Engine を先取りしてるのかなぁ。
できることは、Sneak preview で紹介されていることと同じ、だと思う。

gotoandlearn.com: Sneak Peak of Flash CS5
23min.あたりからがText Layout Framework。

日本語などの縦書きやアラビア語などの右から左へ表示する英語以外の言語に対応するなど意欲的な機能が満載です。
段組みやテキストブロックをリンクできるなどDTPアプリに近いことができるようです。

詳細はAdobeのText Layout Framework 1.0 Major Feature Listから引用です。

  • Bidirectional text, vertical text and over 30 writing scripts including Arabic, Hebrew, Chinese, Japanese, Korean, Thai, Lao, Vietnamese, and others
  • Selection, editing and flowing text across multiple columns and linked containers
  • Vertical text, Tate-Chu-Yoko (horizontal within vertical text) and justifier for East Asian typography
  • Rich typographical controls, including kerning, ligatures, typographic case, digit case, digit width and discretionary hyphens
  • Cut, copy, paste, undo and standard keyboard and mouse gestures for editing
  • Rich developer APIs to manipulate text content, layout, markup and create custom text components
  • ActionScript-based object-oriented model for rich text layout enabling live updates

【実行環境】
Flash Player 10 and Adobe AIR 1.5。
日本語インライン入力には対応できていない様子。(Mac)

【開発環境】
Flash CS4, Flex Builder 3.x, Flash Builder 4.x + Text Layout Framework

Flash CS4 Component
Adobe Labs Downloads
http://labs.adobe.com/downloads/textlayout.html

PDF:http://download.macromedia.com/pub/labs/textlayout/textlayout_flashcomponent_overview.pdf

Flex Bulder, Flash Builder
Flex SDK 4.xに添付済み。
http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4

できることは分かったけど、ドキュメントが少ないのは気が重い。
できることが多いと使うのは多分めんどくさいはず、ドキュメントのありかをリストアップ。

■インストール
Using the Text Layout Framework with Adobe Flex Builder 3.2
Using the Text Layout Framework with Adobe Flash CS4 Professional

■サンプルファイル
Download examples.

■Adobe lab
http://labs.adobe.com/technologies/textlayout/

■forum
http://forums.adobe.com/community/opensource/tlf/

■開発者ブログ
http://blogs.adobe.com/tlf/

■ActionScript 3.0 Reference for the Adobe Flash Platfor
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/package-summary.html
Text Layout Frameworkはflashx.textLayoutにpackageされています。

flashx.textLayout.compose The flashx.textLayout.compose package contains the classes used for breaking text into lines, and arranging lines in containers.
flashx.textLayout.container The flashx.textLayout.container package contains classes for displaying text in the Text Layout Framework.
flashx.textLayout.controls The flashx.textLayout.controls package contains text layout classes.
flashx.textLayout.conversion The flashx.textLayout.conversion package contains classes for importing text to or exporting text from a TextFlow object.
flashx.textLayout.edit The flashx.textLayout.edit package contains classes for editing text in the Text Layout Framework.
flashx.textLayout.elements The flashx.textLayout.elements package contains the core classes used for representing text content in the Text Layout Framework.
flashx.textLayout.events The flashx.textLayout.events package contains event classes for the Text Layout Framework.
flashx.textLayout.factory The flashx.textLayout.factory package contains classes for composing and displaying read-only text in the Text Layout Framework.
flashx.textLayout.formats The flashx.textLayout.formats package contains classes used for representing text formatting in the Text Layout Framework.
flashx.textLayout.operations The flashx.textLayout.operations package contains classes for editing operations applied to the text in the Text Layout Framework.
flashx.textLayout.utils The flashx.textLayout.utils package contains utility classes for the Text Layout Framework.
flashx.undo The flashx.undo package contains the classes that manage the history of editing operations.

API Reference が一番役に立ったような。
ReferenceにのっていないClassがPDFにあったりして困ったりはしたけど・・・

コードサンプルは別の機会に・・・

update2010-01-08
Adobe labs の情報が古いようなので削除します。

Bookmark and Share

Flash Player 10 Beta fo smartphones は10月だってさ

News

2009-06-20
via:@flashtuts
via:FlashMobileBlog : Flash Player 10 Beta for Smartphones at MAX
Adobe CEO Shantanu Narayen氏が Flash Player 10 のスマートフォンへの対応について発言した件の速報。

Adobe – Q2 FY2009 Financial Results
投資家向け事業説明の 13.Platform で簡単に触れています。
10月の Adobe Max で Beta 版が available だそうです。

CNET にも記事が出てます。
アドビ、スマートフォン対応「Flash Player」ベータ版を10月公開へ
Android で Flash Player 10 コンテンツを再生している動画付きです。

iPhone対応はまだらしいのですが、悲観することも無さそうです。
PC版と同等の Flash Player 10 for mobile が出たら Apple も何らかの対応をしないとさすがにまずいのではないかと思います。

指で操作できるボタンの大きさってどれくらい、みたいなことを早く悩んでみたいものです。

Bookmark and Share

Actionscript 3, 筒状に並べた画像を回転させる

Actionscript3 Flash CS4

前回同様 Advanced Actionscript 3.0 Animation を参考に画像を筒状に並べて3D回転させてみた。

サンプルでは Rotate Carousel(回転木馬)と名前がついていた。
サンプルは Shape を並べていて表裏が関係ない、Bitmap に置換えるときに注意が必要。

Rotate Carousel - 1

Flash Player 10 で追加された3D関連のクラスを把握するのに時間がかかりそうな予感。
Matrix3d, Vector3D, PerspectiveProjection が重要な働きをしている。

Demo : Rotate Carousel v.1 - Flash Player 10 が必要です。

ポップアップされたウインドウをリサイズすると面白い。

もう一つ。
PerspectiveProjection.fieldOfView を小さくしたものを作った。

Rotate Carousel 2

Demo : Rotate Carousel v.2 - Flash Player 10 が必要です。

全ての画像が見えるようになると、手前の画像が表を向いている必要があるので、v.2 では rotationY を +180 している。
PerspectiveProjection.fieldOfView は魚眼効果を出す働きがある。
値が大きいと効果も大きくなる、0 から 180 の間で設定できる。

この投稿の続きを読む »

Bookmark and Share

Actionscript 3, 立方体を3D回転

Actionscript3 Flash CS4

Rotate CubeAdvanced Actionscript 3.0 Animation を参考に立方体を3D回転させてみた。

Bitmap を各面にはり、Mouse との距離で回転スピードを調整した。
200px X 200px の正立方体。

リフレッシュごとに各面のZ深度を調整しないと立方体が壊れてしまう。
Flash Player 10 から使える Marix3D を使うのは Actionscript リファレンスを見ただけでは思いつかないな。
Vector3D も登場して難易度はますます上がってしまう。

各面を配列に保持しリフレッシュ時にdeltaTransformVector値を比較しソートさせる。
書けば簡単だけど、イマイチ理論が理解できない。

perspectiveProjection を使うことで stage をリサイズした時の立方体のゆがみを抑制することができるんだね。
以前に比べて簡単なようなそうでもないような・・・


Demo : Rotate Cube - Flash Player 10 が必要です。

この投稿の続きを読む »

Bookmark and Share

Actionscript 3, 3D hover and scale effect

Flash CS4

rotate3dgotoAndLearn() の新しいサンプルを試した。
3D Photo Panels – Learn how to create a nice 3D hover and scale effect using the new features in Flash Player 10.

6枚の画像をマウスにあわせて3D回転させるサンプル。
回転アニメーションにTweenLiteを使う。
クリックされた画像が拡大される。

画像を1枚にし、クリックされた画像が拡大されるを無しで作ってみた。

demo : require Flash Plaer 10 above

この投稿の続きを読む »

Bookmark and Share

Flash で Guiter synthesizer

Flash CS4 News

神 Andre Michelle がまた気になるエントリーとサンプルをアップ。
Flash で Guiter を演奏している。

ブログエントリー
Karplus-Strong Algorithm
aM laboratory
Karplus-Strong Guitar

FITC Amsterdam 2009 で最初のデモをしてきたらしい。

超クールなデモ!
ギター音が Flash でリアルタイム・エフェクト再生されている。

アルゴリズムの Karplus-Strong string synthesis は、Wikipedia 先生によると・・・
難しすぎて良くわからない。。。

ただこの理論が特許で押さえられている可能性があるらしい。

hobnox チームは guiter synthesizer plugin を開発中らしいけど、この件が障害になるとしたら心配です。

Bookmark and Share

Flash Player 10 update, 10.0.22.87

News

Flash Player 10 のニューバージョンがリリースされた。
今度のヴァージョンは 10.0.22.87。

Flash Audio + IE7 でブラウザがクラッシュ?
IE7 + Flash Player 10.0.12.36 + Audio 再生中に CONTROL + N で新規ウインドウを立ち上げるとブラウザがクラッシュする、はFixされた。
Adobe bugjira
SampleDataEvent playback in IE7 window crashes browser when new Flash window displayed

新プレイヤーは下記のURLから。
http://get.adobe.com/jp/flashplayer/

デバッグ版はまだらしい。

ところで、ヴァージョン表記の区切り文字は「ドット」と「カンマ」のどっち。
http://get.adobe.com/jp/flashplayer/ は「ドット」。
http://www.adobe.com/jp/support/flashplayer/ts/documents/tn_15507.htm は「カンマ」。

update
http://www.adobe.com/support/documentation/en/flashplayer/10/Flash_Player_10_Release_Notes.pdf
10.0.22.87の修正点が書かれたPDF。

Flash Player update available to address security vulnerabilities

デバック版も用意されていた。
Adobe Flash Player Support Center

セキュリティアップデートが含まれているのでアップデートは必須。

Adobe AIR 1.5.1

AIR も 1.5.1にアップデートされていた。

Bookmark and Share
Page 1 of 3123
WP Theme & Icons by N.Design Studio
RSS