FLASHで画像がボヤけないようにする方法
2009.02.17
081008.jpg

FLASHを使っていると、↑のように、ボヤボヤ?な画像になってしまっている事があります。
(FRONTのRのところがちょっと横に伸びています。)
FLASH上では大丈夫でも、SWFに書き出すと、このようになってしまい、
とっても困りますsweat02


flair直し方

081008.jpg
通常は、ムービークリップの中はこんなカンジですが、

081008.jpg
中心点の位置をずらして、
X、Y、の座標を、両方ともマイナスにします!

すると...

081008.jpg     →     081008.jpg
直りますshine

動き方や、スクリプトの都合でダメな時もあるかもしれませんが、
バナー等を作る時など、かなり有効なのでは...?

と思いました。


☆★ 3/18 追加でわかったことflair ★☆
ボヤケ画像のXとY座標に細かい小数点が入っている時に、これになりやすいです。

例)
452.8 → 452.0

という風に、キリのイイ数字にしてあげると結構スッキリしますsmile
| コメント(0)
Flash:外部テキストを改行する
2009.02.12
今回もXML読み込みのお話です。
この部分は引っかかることが多いですね、なにか毎回つまずいてるような気がします^^;

XMLファイルのノード内にテキストを書いて、それをFlashで読み込むのですが、改行がうまくいきません。
Flashのほうに、XMLの改行を無視するための
xmlData.ignoreWhite = true;
を書いているのでただ改行しても反映されないのは当然なのですが、Flashの改行コードである \n を入れても改行されない。

で、検索してみたら、こちらにまんまのことが書いてありました。

http://www.flash-jp.com/modules/newbb/viewtopic.php?topic_id=2313&forum=6&post_id=12907

すばらしいです。
\n は読み込んだ時に \\n になっちゃってるんですね・・

一応抜粋させていただくと、
テキストを検索、置き換え用のスクリプトとして

this.convSentence = function (theStc, oldKey, convKey) {
var sentence_array = new Array();
sentence_array = theStc.split(oldKey);
return sentence_array.join(convKey);
};

実際にテキストを変換するために

textData = convSentence(textData, "\\n", "\n");

※textData はテキストが入った変数

と入れることで、\n の改行がちゃんと効くようになります。
| コメント(0)
Flash:表示するテキストが折り返されるかの判断
2009.02.05
XMLなどから読み込んだテキストデータを、ダイナミックテキストに表示させるときのお話です。

テキストフィールドの横幅が決まっていて、かつどのくらいのテキストが入ってくるかわからない場合、テキストが折り返されるか(改行されるか)の判断が必要なときがあります。
たとえば、テキスト終わりの真下にボタンを置きたいときなど。一行のときと二行のときとで、ボタンの位置を変える必要がありますよね。
(注)とくに文字数が必要でなければ" target="_self">こちらが簡単です! (09/09/11)

テキストの文字数を数えることもできますが、.lengthではバイト数を取得できないため、折り返し位置の判断には向きません。(全角なら5文字しか入らない幅でも、半角なら10文字入ります)

そこで、バイト数を判断するスクリプトを探しました。

http://oshiete1.goo.ne.jp/qa3351087.html

こちらの回答を参考にさせていただいています。


// 折り返しの判断
function strReturn(S) {
// バイト数を表す変数 N の初期化
N = 0;
for (i=0; i<S.length; i++) {
if (S.charCodeAt(i)<=255) {
N += 1;
} else {
N += 2;
}
}

// ここに処理を入れる

}

textData = "表示させたいテキスト";

// 実行
strReturn(textData);

こんな感じです。

変数Nは文字のバイト数となります。
テキストを1文字ずつ調べていき、その文字コードが255以下(半角文字)なら1を、それ以外(全角文字)なら2を足していきます。

なのでfor文が終わった時点でのNの値が、そのテキストの合計バイト数になります。

あとはfor文の後に、変数Nを使ったスクリプトを書くだけですね。
一行に半角10文字まで入るテキストフィールドの場合、

L = Math.ceil(N / 10); // 行数を計算

こんな一行を入れます。
これで行数を取得することができました。(変数L)
| コメント(0)

月別アーカイブ