Flash Lite 1.1を動的に表現するためにはloadVariablesを使って外部ファイルを読み込む必要があります。loadVariables(“hoge.php”)など、PHPで出力したテキストに対して、auだけうまくloadVariablesできないときがありました。どうやらechoして出力するファイル形式がテキストタイプということを書くと、うまくloadVariablesすることができるみたいです。
PHP 1
2
3
4
/*↓この1行を最初のほうに書いておく*/ header("Content-type:text/plain"); $hoge = "ホゲホゲ"; echo "hensu=".$hoge;
FlashをHTMLに貼り付ける方法の中でswfobjectsというJavaScriptでswfを表示させる方法が便利です。今更な感じもしますが、ボクが使ってて気になったところ、例えば表示した時、一瞬Flashの場所が抜けて、あとから表示することによってガクガク表示したり、swfのキャッシュをクリアにするなど、個人的に問題と思ったところを補う形で紹介したいと思います。
まずはさっそくソースコードのコピペ場所を! HTML 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//swfobject.jsを呼び出す <script type="text/javascript" src="swfobject.js"></script> //表示させるswfコンテンツの設定 <script type="text/javascript"><!-- var flashvars = {hensu: value}; var params = {allowscriptaccess: "always"}; var attributes = {id: "myFlashContent",name: "myFlashContent"}; swfobject.embedSWF("content.swf?u=20091210", "flashContent", "400", "200", "9.0.0", "expressInstall.swf", flashvars, params,attributes); //--></script> //FirefoxでFlashコンテンツに触ったときに出る、 //点線(フォーカスのアウトライン)を消す。 <style type="text/css"><!-- object {outline: none;} --></style> //実際に表示させる場所に書くHTMLと代替コンテンツ <div style="height:200"> <div id="flashContent"> <h1>代替コンテンツ</h1> </div> </div> swfobject.
FlashのActionScriptでLoadしたXMLファイルやテキストファイルをダイナミックテキストで表示する時に、 パブリッシュすると表示されているテキストが2回改行されている時があります。 テキストファイルの中身を確認したら改行は1回。その時は、そのXMLやテキストファイルの改行コードをみてください。
改行コードがCR+LFとなっている場合は、CRかLFのどちらかを選択するか、 読み込んだテキストに対して正規表現の改行を split("\\r\\n"); して配列に入れてからまたおきかえt(ry って結局ややこしいので、^-^; 元のテキストデータの改行コードをCRかLFのどちらかを選択するほうをお勧めします。 で、文字コードはUTF-8を選択。
かなり限られた条件だと思いますが、ボクが見ているFirefoxではFlsahコンテンツを触ると周りに点線が出るという現象が起きてます。その点線は、テキストリンクや画像リンクに対してクリックしたときと同じ点線が表示します。
点線が出てしまう条件の予想 Windows XP
Firefox(Mac版 Firefoxでは出ませんでした。)
swfobject v2.2 でFlashを表示。 点線を消す方法 根本的解決になるかどうかはわかりませんが、swfobjectでも最終的にはobjectタグをdocument.writeしているので、objectタグに対してoutline: none;としてあげると、ボクの環境でFlashの周りの点線は消えました。
コレでいいのかなー^-^;
CSS 1
2
3
object{ outline: none; } 追記:この点線は、Firefoxでフォーカスがあたっているところに対しての点線でした。見てくれを重視するために、この点線自体を消したい場合は、全体に対してCSSでoutline:nonet;とするといいと思います。
docomo
作ろうiモードコンテンツ:Flash®
au
KDDI au: 技術情報 > 機種別情報一覧
softbank
softbank MOBILE CREATION
iPhoneにしてからすっかりFlash Liteの情報にアンテナを張ることが少なくなってしまいました。最新のFlash Liteのバージョンは3.1になってるんですねー。^-^;
とはいうものの、Flash Lite 1.1でコンテンツを作らざるを得ないのが現状だと思います。しかし、ちょっと凝ったコンテンツを作ろうと思ったらFlash Lite 2.0からじゃないと表現できなかったりします。なんと、docomoはFlash Lite 2.0の端末がないんですよねー。いち早く導入した変わりに、Flash Lite 2.0をとばしてFlash Lite 3.0に対応したみたいです。
ActionScript2を相変わらず使っています。制作業界はもうActionScript3が主流なんですかね。。
ボタンの上にボタンが来るようなコンテンツを作るとき、下のボタンが反応してしまう時があります。それ以外のときでも、onRollOverハンドラで動くモノの上にマウスカーソルを持ってくると、人差し指カーソルになってしまい、矢印カーソルのままにしたい時があります。
そんな時に使うのがuseHandCursorです。マウスカーソルが人差し指になってほしくない所にMovieClipをおいて、そのMovieClipに対してuseHandCursor = false;としてあげるとマウスカーソルは矢印のままになります。ただし、そのMovieClipにonRelease、onRollOverなどのイベントハンドラを設定していることが条件です。
ActionScript 1
2
3
4
mc.useHandCursor = false; mc.onRollOver = function(){ trace("ほげほげ"); }
Flashコンテンツを更新する際、XMLなど外部ファイルにデータを持たせて、それを更新するようなパターンがあります。メリットとしては、Flashアプリケーションを触らなくても更新でき、CMSとの連携もとれたりして非常に便利ではありますが、ActionScriptが複雑になり、Flashコンテンツの制作時間が長くなってしまうデメリットもあります。
XMLを更新したはずなのに、Flashの中身が変更されていない。という時がありました。ほとんどの場合ブラウザがキャッシュしているXMLが残ったまま、更新されたXMLを読みに行かないというのが原因です。のです。確認するときにブラウザのキャッシュを消せばいいのですが、お客さまにわざわざキャッシュを消させるわけにはいきません。^-^;
そこで今回は、ActionScriptでXMLのキャッシュを残さない方法を紹介します。残さないというより、FlashがXMLをロードする時に常に違うファイルとしてブラウザに認識させる方法。という言い方のほうが正しいです。
ActionScript 1
2
var myXML:XML = new XML(); myXML.load("hoge.xml"+"?noCache="+new Date().getTime()); XMLファイルにアクセスするパスに、?引数で現在の時間を付け足しています。サーバーへのアクセスは、[hoge.xml?noCache=1254463831798]こんな感じになり、ブラウザは1秒前とは違うファイルと認識して新たにXMLを取得、キャッシュを見に行くことはなくなるということです。特にXMLファイルの中身を書き消したりすることはありませんのでご安心を。
コンテンツが更新されない!とパニックを起こされる前に事前に対策しておいたほうがいいですねー!