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)
MT経由xmlで書き出し更新情報を管理
2008.10.03
html構成の本サイトの更新情報に、別ドメインのブログ(ホスティング+MT)を更新した情報も織り交ぜて掲載したい、しかも、更新情報はブログ更新時にhtml初心者スキルの人が更新したい、という要件がありました。


ポイントは2つ

・複数ドメインの更新情報の管理のため、更新情報だけ個別管理になることはやむを得ない
・更新は複数人(htmlスキルがない人)で更新するので管理画面付きが理想


で、『更新情報はエントリーでとして扱ってMTで更新』

更新情報全体を別ドメインのMTで管理
 ↓
xmlで書き出し
 ↓
そのxmlを本サイトに埋め込まれてswfで読み込む

という方法で対応しました。

※xmlとswf を違うサーバーがため、xmlを取りに来た外部サーバーのリクエストにxmlを引き渡しの許可する設定xmlファイルをブログ側に設定。

********************

講談社の女性誌『with』トップページのwhats newはこれを使って更新しています。

081003_01.gif

・"タイトル"や"本文"欄:どこかのフィールドにwhat newに表示されるの項目からのリンク先URL
・"カテゴリー"欄:あらかじめ、what newに表示される項目をカテゴリーとして登録。エントリー時に選択されたカテゴリーがwhats new上に表示される

※リンクのターゲット:_top、_blankなどをやはり、どこかのフィールドを利用して設定できるようにしてあげると便利。
※出力先の日付=エントリー日付 で自動的に出力


エントリーすると‥‥

081003_02.gif

グラビティワークス 浅賀
| コメント(0)
リンク先にあるFlashを任意のフレームから開始する
2008.09.03
以前に、リンク先のページにあるFlashを、特定のフレームから開始させることが必要なときがありました。

【 B 】【 C 】【 D 】という複数のページからリンクされている【 A 】というページがあり、この ページ【 A 】にあるFlashを、【 B 】のリンクから飛んできたときはフレーム1から開始、【 C 】から飛んできたときはフレーム2から開始、【 D 】からのときはフレーム3から開始させる、というような具合です。

実はとても簡単なことだったのですが・・ そのときはとても苦戦してしまったので、書いておこうと思います。


■ Flash 側の設定

1 、飛ばしたいフレームにラベルを付ける
今回はフレーム1、2、3にそれぞれ飛ばしたいので、フレーム1には「B」、フレーム2には「C」、フレーム3には「D」というラベルを付けました。

2 、「ラベルの種類」の項目を「アンカー」にする
フレームラベルのテキストボックスの下に、「ラベルの種類」という項目があるので、それを「アンカー」にします。


■ HTML 側の設定

1 、リンクURLのあとにラベル名を入れる
リンクURLのあとに、「 # 」と、Flashのほうで設定した「ラベル名」を入れます。

ページ【 B 】の場合だったら、

<a href="A.html#B">

という感じになります。


たったこれだけ・・

あまり使う機会はないかもしれませんが、簡単なので覚えておくだけでも良いかもしれませんね。

| コメント(0)
SharedObjectを使ったときのデータの保存場所
2008.08.27

Flashでローカルにデータを保存する場合、SharedObjectというクラスを使用します。

そのときのデータの保存場所ですが、引数で指定しない限りは、デフォルトで下の場所に保存されます。



■ Windows 95 / 98 / ME / 2000 / XP:

c:/Documents and Settings/username/user_domain/Application Data/Macromedia/Flash Player/#SharedObjects/web_domain/path_to_application/application_name/object_name .sol


■ Windows Vista:

c:/Users/username/user_domain/AppData/Roaming/Macromedia/Flash Player/#SharedObjects/web_domain/path_to_application/application_name/object_name .sol


■ Macintosh OS X:

/Users/username/Library/Preferences/Macromedia/Flash Player/#SharedObjects/web_domain/path_to_application/application_name/object_name .sol


■ Linux / Unix:

/home/username/.macromedia/Flash_Player/#SharedObjects/web_domain/path_to_applicatio n/application_name/object_name.sol



隠しフォルダを見えるようにしておかないと表示されないフォルダもあるので、見つけるのは結構大変・・。


引用は以下から。

http://livedocs.adobe.com/flex/3_jp/html/help.html?content=lsos_3.html

| コメント(0)

月別アーカイブ