?!?!

P.D.S.のちらしのうら的な物

記事検索

検索フォーム
キーワード
検索方法

検索結果一覧

Flashで動画を再生するときにフレームレートが落ちる

このサイトでアップしている動画を見るときに
窓XP SP3・げふぉGTX295のSLI動作環境で
ハードウェアアクセラレーションを利用すると
フレームレートが60から20まで落ちますね・・・・
SLIを無効にすると元に戻ります

CS4付属のコンポーネントが悪いのかFlashPlayerが悪いのか
げふぉのドライバーが悪いのかは判りませんが
FlashPlayerのハードウェアアクセラレーションは
いきなりPCが落ちる等、地雷が多いようです

動作が怪しい時は
FlashPlayerのハードウェアアクセラレーションを無効にしてみると
解決するかもしれません

FlashLite1.1上での時計表示

ANGEL PLAYERをFlashLite1.1化するため資料を引っ張り出したのでメモメモ

曜日文字列変換

FlashLite1.1では配列変数が使えないため擬似的な方法を使います
(曜日程度ならばswitchとかでも良いんですががが)

week0 = "Sun";
week1 = "Mon";
week2 = "Tue";
week3 = "Wed";
week4 = "Thu";
week5 = "Fri";
week6 = "Sat";

のように文字+数字のものをあらかじめ作っておき

week = eval("week" add fscommand2("GetDateWeekday"));

とすれば配列のように曜日文字列が取得できます
evalを使うところがポイントです


ここでは使ってませんが
疑似配列のデータが何個あるかを取得したい時は

num_Week = 0;
while( eval("week" add num_Week) ne ""){num_Week++}

としておけばnum_Weekは6となります
nullやundefinedは使えませんので「""」としてあります

空白のデータも扱いたい時は
終わりを表す文字列を決めてやればOKです

上記weekの疑似配列に

week7 = ""
week8 = "ArrayEnd"

を追加して

num_Week = 0;
while( eval("week" add num_Week) ne "ArrayEnd"){num_Week++}

とするとnum_Weekは7となります
chr関数で通常では使わない文字を指定した方が確実かもしれません

年月日や時間を表示

上記の曜日文字列変換に加えて・・・・

year = fscommand2("GetDateYear");
mon = fscommand2("GetDateMonth");
if (mon < 10) { mon = "0" add mon}
day = fscommand2("GetDateDay");
if (day < 10) { day = "0" add day}
str_Date = year add "/" add mon add "/" add day add "(" add week add ")";

としてやると2010/01/01(Fri)のような桁あわせを含めた年月日を作れます
FlashLite1.1で文字列をくっつけるときは
+ でなく add を使います

時間は

hour = fscommand2("GetTimeHours");
if (hour < 10) { hour = "0" add hour}
min = fscommand2("GetTimeMinutes");
if (min < 10) { min = "0" add min}
sec = fscommand2("GetTimeSeconds");
if (sec < 10) { sec = "0" add sec}
str_Time = hour add ":" add min add ":" add sec;

となります

あとはダイナミックテキストをステージ上に配置して
プロパティ内の変数にstr_Dateやstr_Timeと指定してやれば表示されます
この方法はAS3.0では廃止されたので判らない人がいるかもしれませんねー
あと、デバイスフォントを使わない場合はテキスト埋め込み指定を忘れずに

時間を秒単位までしか取得出来ない

FlashLite1.1では時間取得にfscommand2を使用しますが
これは秒単位までしか時間が取得できません
Dateオブジェクトのような1/1000秒単位を使いたい場合は
getTimer()を併用する必要があります

昔に作ったマビノギの携帯用MG表の時計が等間隔で動かせているのは
getTimer()を併用して解決しているためです
(マビノギの時計を作ったことがある人しかわかりませんかそうですが)

FlashVars等を使ったAS3.0swfへの変数受け渡し

AS2.0ならば特に何もしなくても_rootに収まってましたが
AS3.0ではloaderInfo.parametersから引き出さなきゃいかんようです
資料がなかなか見つからずえらい苦労させられました

HTMLのタグから

OBJECT内
<param name="FlashVars" value="movie=MS1_St.Muscle.mp4&image=MS1_St.Muscle.png" />

EMBED内
FlashVars="movie=MS1_St.Muscle.mp4&image=MS1_St.Muscle.jpg"

とした場合、AS2.0ならば何もしなくても
_root.movie に MS1_St.Muscle.mp4 が
_root.image に MS1_St.Muscle.png が入ってますが
AS3.0の場合は
var mov:String = loaderInfo.parameters["movie"];
var img:String = loaderInfo.parameters["image"];
のように受け渡し処理をしないといかんそうです
ちくしょーやっぱりめんどくさくなってたかヽ(`Д´)ノ

AS2.0とAS3.0では命令も概要も別物になっていることと
携帯コンテンツはしばらくの間AS2.0で作る必要があるため
開発者はかなり苦労させられると思います(別の言語を二つ覚えるのと同じ)


PS:
ADOBEのマニュアルは不親切な上にサンプルコードが無いんでワケワカランですだ
おまけにWEBマニュアルとか非常に使いづらいんでまぢやめてくれ
macromediaの頃のマニュアルは下手なガイドブックより解りやすかったので
Flash5を買った時に基本操作の本を一冊買っただけで
あとはマニュアルとにらめっこだけで何とかなりました

Angel Beats!のANGEL PLAYERっぽいもの

携帯用の待受画像とスクリーンセーバーっぽいのをFlashで作りました


http://shiraizaka.jp/blog/files/AB_AP.swf

F-03Bだとかなり重たいですね・・・・
F-03Bであまり違和感が出ないように分度器の画像とFPSを調整してあります

【2010/12/24】
この携帯待受はFlashLite3.0+ファイル容量を考えずに作ったため
動かない機種が結構あると思います
分度器の画質を落として100KB以下にした上に
コードをFlashLite1.1に書き換えたものも置いておきます
http://shiraizaka.jp/blog/files/AB_AP_Lite.swf
FlashLite1.1化したのでFlashが使える携帯ならこれで動くと思いますが
自分では使わないためデバッグしてませんので
おかしいところがあったら知らせて貰えると直すかもしれません


こっちはスクリーンセーバー向けに作ったswfです

http://shiraizaka.jp/blog/files/AB_AP_SS.swf


【2010/11/11】
昔からあるswfスクリーンセーバー化ツールであるLightSaver
作ったscrのインストールやアンインストールが手動になってしまいますが
設定で半透明化させたり背景色を変更出来たりします

LightSaverからscrを作りたい場合は
分度器と文字の合成方法を変更した
http://shiraizaka.jp/blog/files/AB_AP_SS_2.swf
のほうを使ってください

背景の色を 赤:99 緑:0 青:0
画面の透過を有効にして透明度を224にするとこんな感じになります
AB_AP_SS_2.jpg

PS:
デフォ設定だとキーボード入力が無いと止まらない設定になってますので
再生タブからマウスのどの動作で停止するか設定したほうがいいかもです
おりは左右どちらかのボタンが押されたら止まるようにしています

あとWindows7上でも動いてます
LightSaverフォルダが別の場所に作られること以外は問題無いと思います


【ダウンロード】

AngelPlayer.zip

上のFlash全部 +fla:ver Lite Edition for Windows
Windowsのスクリーンセーバーに変換したものをまとめてあります


【2012/01/29】

20120129_003.jpg

文字列を自分で書き換えられて保存するように改造したものです
文字列書き換えは
ローカルにダウンロードしたこのswfをブラウザで開くなりして
スタンドアロン動作させた状態で行う必要があります
使い勝手わるいですねー(苦笑

http://shiraizaka.jp/blog/files/AngelPlayer.swf

Light Saverでscr化してWindows7 64bit版でテストしてますが
どーもLight Saverの設定保存の挙動が怪しいようです
設定ファイル読み込み時にファイル名9文字制限が発生してるようなので
Light Saverで使用する人は
ファイル名を9文字以下にリネームするなりしてください
(前9文字がほかのscrと合致しなければたぶん大丈夫だと思います)

Angel Beats!のSSSロゴ回転待受画像

携帯電話を買い換えてブラウザをいじってたら
Flash8で作った物の一部が動いていたので調べてみると
F-03BはFlash Lite3.1まで対応してるようなので
んじゃ携帯用の待受画面でも作ってみんべ?と言うことで作ってみました

古いバージョンのFlash Liteのことは考えずに作ったので
作ろうiモードコンテンツ:Flash ←このページに載っている
Flash Lite3.0以上に対応した携帯じゃないとたぶん動かないです
ほかのキャリアはわからないですごめんなさい

ロゴの回転再現で納得いかない所があるんですが
たぶんこれが限界だろうということで
完成ということにしておきます


作戦会議の時に後ろで動いてるアレっぽいやつ

4GBのうち○○%使用 の部分は携帯のバッテリーの使用量を%で表しています
バッテリー満タンなら0%、残り20%なら80%と表示します
%の最小単位は機種に依るため
33%単位でしか表示させられない機種もあるかもしれませんが
F-03Bなら1%単位で表示してました

http://shiraizaka.jp/blog/files/AB_BM.swf
AB_BM.jpg


EPISODE.01のスタッフロール時のやつ

http://shiraizaka.jp/blog/files/AB_SSS_logo.swf
AB_SSS_logo.jpg


【2010/05/28】

ぷちバージョンアップage
ロゴ回転の算出方法をいじくりますた
BMのほうは1フレーム毎に特定の角度を加算していく方法で
EDロゴのほうは経過時間から角度を算出して描画します

これにより
・BMのほうは待受画面で止まった後に再び動かすと止まったところから回転しますが、回転速度がフレームレート依存になり動作環境や機種により不安定になります
・EDロゴのほうは回転速度は常に一定ですが再開時に回転が飛びます

通常なら後者のほうで問題無いんですが
待受画面だとFlashの動作が止まることがあるんで
前者の方法も候補に入れないといけないんですよねぇ・・・・


【2010/08/22】

スタッフロールバージョンのロゴを少し小さくしたのと
両方のロゴ回転時の傾斜を少し緩くしました

疑似3D化するなら台形に変形させる必要がありますが
それが出来ないためひし形に変形させてごまかしてます
単純に横に回転させるよりは3Dっぽく見えるんですが
やりすぎるとおかしく見えるので加減が難しいところです

ナビゲーション

PHP Blog