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ではできないのかが納得いきません。

    
 
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");

と書くことで、これを防げます。

最近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=の後の記述によって変わってきます。


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>

我が家ではまだibookG4も健在ですが、どうやらMacBookAirを上回る薄さ、軽さ等を実現したMacBookPaperが実現するみたいです!
MacBookPaperを見た時には、おお!こりゃやられたー!と思い、我が家にも導入しました。

何と言ってもすばらしいのはコストパフォーマンスの高さと、薄さの割に、大変壊れにくい仕様であることです。
MacBookPaperの成功の鍵は、"原点回帰"かなと感じました。

MacBookPaperの詳細はこちら
http://d.hatena.ne.jp/shunsuk/20081106/1225956594

MacBookPaperはAppleStoreでは取り扱っていませんが、MacBookAirの詳細はこちら
Apple Store(Japan)
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>
価格.com ブロードバンド


ブックマークに追加