ブログでブームはブロモーション
PR
カテゴリ
ガラスアクセサリーの幸愛硝子

最近の記事

PR
過去ログ
リンク集
□個人的リンク
食育倶楽部
関内・横浜ラーメンブログ
本と文化の街 スーパー源氏
(古本・書籍検索ポータル)


■相互リンク
・「疑似的快楽
・「eguegu-Photo
・「詠う鯨
・「電脳生活で健康維持
・「やくにたたない?PCブログ

■メーカ
NEC
SHARP
ソニースタイル
東芝
富士通
Panasonic
日立
エプソンダイレクト
Lenovo
日本hp
Dell
ソーテック

■BTO・パーツ屋
グットウィル
韋駄天PC Online Shopping
WiNDy ONLINE
クレバリー
TWOTOP
ドスパラ
ハーキュリーズ
パソコン工房
T・ZONE
VSPEC
フェイス
BLESS
フロンティア
マウスコンピューター

■中古
ソフマップ中古販売
ソフマップ・ドットコム 買取りサイト

■確定申告関連
税理士が一生懸命に考えた税務支援サイト
無料法律相談

■ショッピングモール
Amazon
楽天市場
【Yahoo!ショッピング】おすすめ情報
ライブドアデパート

TOP  >  携帯待受  > 

2008年06月06日

ParaFla!のSWF4作成時埋め込みフォント不具合?回避+α

昨日の記事で触れた不具合とその回避策としてActionScriptを含む縦書き(上詰めもしくは手を加えれば横書き左詰用として使用可能)用プロジェクトの作り方を解説します。

ただし元になるParaFla!のプロジェクトファイルはeucampiaさんのテンプレートを使用しているので、問題があればすぐに公開を停止します。
元のファイルの「始めにお読み下さい」の部分を残してあります。

上記の通りなので現象と仕組みを説明します。

■これを使う意義
00:00:00ではなく#0:#0:#0という形式にしたい場合
(01を1と表示させ、更に上詰または左詰で表示させたい場合)
00.00.00(thu)ではなく0年0月0日 木などと表示したい場合

縦書き(漢数字など)表示させたい場合
(例:水墨画風鯨待ち受け

■現象
・SWF4(携帯用)のプロジェクト
・埋め込みのフォントを使用(使用する「2バイト文字」は登録済み)
・ダイナミックテキスト(変数名使用)
・ActionScriptで文字列変数に当該登録文字を代入するとエラーになる
例)
「〇一二三四五六七八九十時分秒」というダイナミックテキストを登録
str = "十"; などとするとエラー。時・分・秒・年・月・日でも同様。
〇〜九ならエラーは発生しません。

■対策
上記eucampiaさん作テンプレートで画像を使用する時計・日付を使用します。

※ただし、24時間制ではなく、1時〜12時制にしてあります。
0時→12時・13時→1時

・流れ(詳細は後述)
1.各文字を一文字ずつテキストとして登録
2.時・分・秒(もしくは年・月・日)のスプライトを作成
3.10の位のスプライトを作成
4.取得した時刻の時の数値を変更
5.時刻(もしくは日付)のスプライトを設定・ActionScriptを変更

テキストの登録1について
右の画像のように(クリックで拡大します)1文字ずつ登録します。
登録テキスト各テキストの設定はこんな感じです。
フォントは好きなものを選択してください。
鯨の待ち受けでは時計には「〇」という文字は使用していませんが、年月日の西暦表示で「〇」を使用するため、共通部品として登録してあります。

2について
時・分・秒スプライト時・分・秒(もしくは年・月・日)という名前のスプライトを作成し、テキストを登録してください。
単純に(0,0)の位置に置くだけです。

10の位スプライト3について
・10の位が0の場合はその桁を表示しない
→0の時は画像を消去する処理に書き換え

・漢数字の場合
10→10の位は十=1文字です。
20(以上)→10の位は二十=2文字です。
よって、スプライトの大きさ(プロパティで設定)2文字分の大きさにしておいてください。
(縦書きなら高さを倍、横書きなら幅を倍に)

4について
ルートにある「取得情報と変数名」の以下の部分に2行追加します。

nowHou=FSCommand2("GetTimeHours");
if(nowHou>12)nowHou -= 12; // 1時〜12時制の場合
if(nowHou==0)nowHou = 12; // 0時を12時にする場合


parafla06.png5について
・2で作成した時・分・秒(もしくは年・月・日)のスプライトを配置
→座標値はコードで変更するのでどこでもいいです。

・各数字スプライトのうち、10の位にあたるH1・M1・S1のプロパティを開き、IDを「10の位」のスプライトへ変更する。

・アクションスクリプトの冒頭に以下を追加する
※ActionScriptを全然知らないので、変数の扱い等々よくわかんないんですが動いてるので良しとしています。
条件分岐も適当で付け焼き刃のコードなので変だったら書き換えてください。

※横書きならxyの指定を逆転させてください。
※szは文字の大きさによって変更してください。


// 変数の初期化
cnt = 0; // 表示座標のカウンタ
flag = 0; // 非表示フラグ
sz = 17; // 1文字分の高さ(もしくは幅)

// 時

// 表示初期化
H1.alpha = 100; // 10の位を表示
H2.alpha = 100; // 1の位を表示
H1.x = 0;
H1.y = cnt;
H2.x = 0;
H2.y = cnt + sz;

if(substr(/:nowHou, 1, 1)==="0"){
H1.alpha = 0;
H2.y = cnt;
cnt += sz;
} else if(substr(/:nowHou, 2, 1)==="0"){
H2.alpha = 0;
cnt += sz;
} else {
cnt += sz*2;
}

txtH.y = cnt;
cnt += sz; // 「時」1文字分加算


// 分

// 表示初期化
M1.alpha = 100; // 10の位を表示
M2.alpha = 100; // 1の位を表示
txtM.alpha = 100; // 「分」を表示
M1.y = cnt;
M2.x = 0;
txtM.x = 0;

if(substr(/:nowMin, 1, 1)==="0" && substr(/:nowMin, 2, 1)==="0"){
M1.alpha = 0;
M2.alpha = 0;
txtM.alpha = 0;
flag = 1;
} else if(substr(/:nowMin, 1, 1)==="0"){
M1.alpha = 0;
M2.y = cnt;
cnt += sz;
} else if(/:nowMin === "10"){
cnt += sz;
M2.alpha = 0;
} else if(substr(/:nowMin, 1, 1)==="1"){
cnt += sz;
M2.y = cnt;
cnt += sz;
} else if(substr(/:nowMin, 2, 1)==="0"){
M2.alpha = 0;
cnt += sz*2;
} else {
cnt += sz*2;
M2.y = cnt;
cnt += sz;
}

if(flag != 1){
txtM.y = cnt;
cnt += sz;
}

flag = 0; // フラグリセット


// 秒

// 表示初期化
S1.alpha = 100; // 10の位を表示
S2.alpha = 100; // 1の位を表示
txtS.alpha = 100; // 「秒」を表示
S1.y = cnt;
S2.x = 0;
txtS.x = 0;

if(/:nowSec==="00"){
S1.alpha = 0;
S2.alpha = 0;
txtS.alpha = 0;
flag = 1;
} else if(substr(/:nowSec, 1, 1)==="0"){
S1.alpha = 0;
S2.y = cnt;
cnt += sz;
} else if(/:nowSec === "10"){
S2.alpha = 0;
cnt += sz;
} else if(substr(/:nowSec, 1, 1)==="1"){
cnt += sz;
S2.y = cnt;
cnt += sz;
} else if(substr(/:nowSec, 2, 1)==="0"){
S2.alpha = 0;
cnt += sz*2;
} else {
cnt += sz*2;
S2.y = cnt;
cnt += sz;
}

if(flag != 1){
txtS.y = cnt;
}


上記が全部入った時刻・日時の部分だけを入れたParaFla!プロジェクトファイルです。
kanji_digital.zip
※ウィルスチェックはしてあります。

にほんブログ村 PC家電ブログ パソコン・周辺機器へ クチコミblogランキング TREview
posted at 00:40 | Comment(2) | TrackBack(0) | 携帯待受
この記事へのコメント
結構悩ましいエラーですね。
表示的には27分=『二七』でも全然OKですが,『二十七』にしなければと言うところにプログラマ魂を感じます。
・・・見習わなければ

COBOL見ていたときに,桁定義や出力位置を間違えて,プログラムは通るのに結果が全然ダメ〜 ってのはよく経験しました。
悩んで何度も見返した結果,
PIC X(7) → PIC X(8) で全て解決なんて事も・・・

『全く,このくらい融通きかせろよ! つかえね〜な〜』と,モニタに向かってぼやいていました・・・
Posted by じにー at 2008年06月06日 22:35
>じにーさん
なんか下らない記事にコメントいただいてありがとうございます!
横書きだと二七でもいいんですが、11分などの時に縦書きだと二に見えるというか、見づらいのでどうしてもこうしたかったんです。

配列の指定とかシンタックスって見落としがちなんですよね。
似たような変数名をつけたときとかもコンパイルできても結果が変ということになったりして、悩みますよね。
なんかものすごく心当たりが・・・

>融通を利かせてくれるCPU
喉から手が出るほど欲しい!(;´∀`)
Posted by 管理人 at 2008年06月06日 23:54
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/99549131

この記事へのトラックバック