November 2008アーカイブ
ダイナミックテキストに読込んだ文字列の文字間隔(字間)を制御したいと思い調べてみました。
文字間隔で使うのは、
TextFormat.kerning
TextFormat.letterSpacing
です。
結論は、以下を満たせばできます。
・WindowsのFlashでパブリッシュする
・フォントを埋込んだテキストである
残念ながら普段使っているFlashはMachintosh版のFlashCS3なので、実際に使えませんでしたが、せっかくなので参考のために使い方を記録しておきます。
//ActionScript//////////////////////////////////////////////////////////////////
private function setTextarea(object:MovieClip){
var fmt:TextFormat = createTextFormat();
object.setTextFormat(fmt);
object. = true;
object.antiAliasType = "advanced";
}
private function createTextFormat() :TextFormat {
var fmt:TextFormat = new TextFormat();
fmt.font ="common_font";
fmt.kerning = true;
fnt.letterSpacing = 10;
return fmt;
}
setTextarea(sample_txt);
で、sample_txtに対してフォント埋込みと、文字間調整ができる(はず)。
でも、なぜMac版Flashではできないのかが納得いきません。
文字間隔で使うのは、
TextFormat.kerning
TextFormat.letterSpacing
です。
結論は、以下を満たせばできます。
・WindowsのFlashでパブリッシュする
・フォントを埋込んだテキストである
残念ながら普段使っているFlashはMachintosh版のFlashCS3なので、実際に使えませんでしたが、せっかくなので参考のために使い方を記録しておきます。
//ActionScript//////////////////////////////////////////////////////////////////
private function setTextarea(object:MovieClip){
var fmt:TextFormat = createTextFormat();
object.setTextFormat(fmt);
object. = true;
object.antiAliasType = "advanced";
}
private function createTextFormat() :TextFormat {
var fmt:TextFormat = new TextFormat();
fmt.font ="common_font";
fmt.kerning = true;
fnt.letterSpacing = 10;
return fmt;
}
setTextarea(sample_txt);
で、sample_txtに対してフォント埋込みと、文字間調整ができる(はず)。
でも、なぜMac版Flashではできないのかが納得いきません。
FuseKitで、透明度=_alphaの値を変化させることができるalphaToはとっても便利ですが、_alphaの変化+_visibleの変更をあわせたとっても便利ツールがZigoEngineを利用して扱えるfadeInとfadeOutです。
とっても便利ではありますが、fadeInとfadeOutを使うだけでは、場合によってはうまい具合にきれいに見えないので、メモしておきます。
//ActionScript//////////////////////////////////////////////////////////////////
sample_mc.fadeIn(1,"linear");
sample_mc.fadeOut(1,"linear");
上のように書いた場合、
fadeOutは、sample_mcの_alphaを指定時間で0にした後、_visibleをfalseにしてくれます。
fadeInは、sample_mcの_visbleをtrueにして、指定時間で_alphaを100にしてくれます。
しかし、sample_mc._visibleとだけ指定して見えないようにしてあるところにfadeInをさせると、fadeInを開始した瞬間に_visible=trueになることで、_alphaは既に100のままなので、「パッ」と見えてしまうことになります。
そこで、下のように
//ActionScript//////////////////////////////////////////////////////////////////
sample_mc._alpha = 0;
sample_mc.fadeIn(1,"linear");
と書くことで、これを防げます。
とっても便利ではありますが、fadeInとfadeOutを使うだけでは、場合によってはうまい具合にきれいに見えないので、メモしておきます。
//ActionScript//////////////////////////////////////////////////////////////////
sample_mc.fadeIn(1,"linear");
sample_mc.fadeOut(1,"linear");
上のように書いた場合、
fadeOutは、sample_mcの_alphaを指定時間で0にした後、_visibleをfalseにしてくれます。
fadeInは、sample_mcの_visbleをtrueにして、指定時間で_alphaを100にしてくれます。
しかし、sample_mc._visibleとだけ指定して見えないようにしてあるところにfadeInをさせると、fadeInを開始した瞬間に_visible=trueになることで、_alphaは既に100のままなので、「パッ」と見えてしまうことになります。
そこで、下のように
//ActionScript//////////////////////////////////////////////////////////////////
sample_mc._alpha = 0;
sample_mc.fadeIn(1,"linear");
と書くことで、これを防げます。
最近MTとFlashを連携させる仕事が多く、日付のフォーマット変更などもFlashでもできますが、MTでやってからXMLで持ち込んだ方が楽なことに気がついたので、よく使うMTでの日付フォーマットの変え方をここに記録しておきます。
//MT_テンプレート内//////////////////////////////////////////////////////////////////
とっても単純に、
<$MTEntryDate format="%x"$>
「2008年11月13日」と出力されます。
<$MTEntryDate format="%Y.%b.%e"$>
「2008.11.13」と出力されます。
<$MTEntryDate format="%Y年%m月%d日"$>
「2008年11月13日」と出力されます。
などなど、format=の後の記述によって変わってきます。
//MT_テンプレート内//////////////////////////////////////////////////////////////////
とっても単純に、
<$MTEntryDate format="%x"$>
「2008年11月13日」と出力されます。
<$MTEntryDate format="%Y.%b.%e"$>
「2008.11.13」と出力されます。
<$MTEntryDate format="%Y年%m月%d日"$>
「2008年11月13日」と出力されます。
などなど、format=の後の記述によって変わってきます。
Flashで何かを作る時、更新性も考えて文字や画像パス、リンクなど、外部XMLから引っ張って使うこと多数ですが、そんなときにいつも利用するのがXpathです。
Xpathがなかったら発狂して死んでしまうかもってくらい便利です。
Xpathの利用に当たっての準備はxpathを使う//AS2.0を参照してください。
下のサンプルでは、XMLからprivate変数の配列に値を読込みます。
読み込みが完了して、trace(self.dataitems);を実行すると、"はれ","ゆき","吹雪"が出力されます。
いや〜本当にxpath様のおかげでFlashとXMLが仲良くできることを日々痛感しています。
//ActionScript//////////////////////////////////////////////////////////////////
import com.xfactorstudio.xml.xpath.*;
private var dataitems:Array;
private function itemXML(no){
var self:Controller = this;//Controller.as内で使う場合
var myXML:XML = new XML();
myXML.ignoreWhite = true; //空白文字をパスする呪文
myXML.onLoad = function() {
self.dataitems = XPath.selectNodesAsString(this,"data/item/")
trace(self.dataitems);
}
myXML.load("src/test.xml");
}
//XML//////////////////////////////////////////////////////////////////
<?xml version="1.0" encoding="UTF-8"?>
<data>
<item>はれ</item>
<item>ゆき</item>
<item>吹雪</item>
</data>
Xpathがなかったら発狂して死んでしまうかもってくらい便利です。
Xpathの利用に当たっての準備はxpathを使う//AS2.0を参照してください。
下のサンプルでは、XMLからprivate変数の配列に値を読込みます。
読み込みが完了して、trace(self.dataitems);を実行すると、"はれ","ゆき","吹雪"が出力されます。
いや〜本当にxpath様のおかげでFlashとXMLが仲良くできることを日々痛感しています。
//ActionScript//////////////////////////////////////////////////////////////////
import com.xfactorstudio.xml.xpath.*;
private var dataitems:Array;
private function itemXML(no){
var self:Controller = this;//Controller.as内で使う場合
var myXML:XML = new XML();
myXML.ignoreWhite = true; //空白文字をパスする呪文
myXML.onLoad = function() {
self.dataitems = XPath.selectNodesAsString(this,"data/item/")
trace(self.dataitems);
}
myXML.load("src/test.xml");
}
//XML//////////////////////////////////////////////////////////////////
<?xml version="1.0" encoding="UTF-8"?>
<data>
<item>はれ</item>
<item>ゆき</item>
<item>吹雪</item>
</data>
我が家ではまだibookG4も健在ですが、どうやらMacBookAirを上回る薄さ、軽さ等を実現したMacBookPaperが実現するみたいです!
MacBookPaperを見た時には、おお!こりゃやられたー!と思い、我が家にも導入しました。
何と言ってもすばらしいのはコストパフォーマンスの高さと、薄さの割に、大変壊れにくい仕様であることです。
MacBookPaperの成功の鍵は、"原点回帰"かなと感じました。
MacBookPaperの詳細はこちら
http://d.hatena.ne.jp/shunsuk/20081106/1225956594
MacBookPaperはAppleStoreでは取り扱っていませんが、MacBookAirの詳細はこちら

MacBookPaperを見た時には、おお!こりゃやられたー!と思い、我が家にも導入しました。
何と言ってもすばらしいのはコストパフォーマンスの高さと、薄さの割に、大変壊れにくい仕様であることです。
MacBookPaperの成功の鍵は、"原点回帰"かなと感じました。
MacBookPaperの詳細はこちら
http://d.hatena.ne.jp/shunsuk/20081106/1225956594
MacBookPaperはAppleStoreでは取り扱っていませんが、MacBookAirの詳細はこちら

Flashでは常にStage.widthでウィンドウサイズをとって、コンテンツの配置やサイズ等を可変にすることができますが、CSSはwidthを%換算にすることはできますが、他には無いかと思って考えてみました。
今回はFlashで作ったswfを#flashnaviに読み込むためのエリアですが、規定サイズ(ここでは1000px)以下の場合には1000pxより#flashnaviのwidthが縮まらないようにしました。
ウィンドウの幅は、Javascriptのwindow.innerWidthでとれるはず!と思いましたが、IEなどでは計算方法が異なるため、以下の方法を使いました。
下の例では、ウィンドウサイズが1000px以下の場合のみの記述ですが、elseやelse if等を使って、もっと細かく指定するといろいろと使えそうです。
//CSS//////////////////////////////////////////////////////////////////
#flashnavi{
width:100%;
}
//HTML//////////////////////////////////////////////////////////////////
<script language="JavaScript">
<!--
inW = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
if(inW<1000){document.write("<style>#flashnavi{width:1000px !important;}</style>");}
// -->
</script>
今回はFlashで作ったswfを#flashnaviに読み込むためのエリアですが、規定サイズ(ここでは1000px)以下の場合には1000pxより#flashnaviのwidthが縮まらないようにしました。
ウィンドウの幅は、Javascriptのwindow.innerWidthでとれるはず!と思いましたが、IEなどでは計算方法が異なるため、以下の方法を使いました。
下の例では、ウィンドウサイズが1000px以下の場合のみの記述ですが、elseやelse if等を使って、もっと細かく指定するといろいろと使えそうです。
//CSS//////////////////////////////////////////////////////////////////
#flashnavi{
width:100%;
}
//HTML//////////////////////////////////////////////////////////////////
<script language="JavaScript">
<!--
inW = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
if(inW<1000){document.write("<style>#flashnavi{width:1000px !important;}</style>");}
// -->
</script>
