ブログパーツのようなFlashで、いろいろなサイトに埋め込まれるSWFの
埋め込まれているページのURLを取得する方法。
import flash.external.*;
var locationHref:String = String(ExternalInterface.call("function(){return location.href}"));
ExternalInterface.callの1番目の引数は、呼び出すJavaScriptのメソッド名という事になっていますが
ExternalInterface.call("myMethod","args1","args2");
は単純に以下のようなJSが実行されているものと考えられるので
eval("myMethod").apply(window,["args1","args2"]);
まぁ、ようするに無名関数をFlash側で引数としてあげればいいと。
eyeVioがHD動画に対応してます。
http://eyevio.jp/
今回もいつも通り、動画のプレイヤーと、JavaScriptあたりをやりました。
FlashPlayerは7で作っているのでExternalInterfaceクラスが使えないわけですが、
それでも一生懸命JavaScriptと連携しています。
SWFからダイナミックにHTMLのレイアウトを弄ったりして、なかなか楽しいです。
今回途中で非同期処理の管理に嫌気がさしたのでAS2用のスレッドライブラリを作りました。
AS3ではSparkの「そうめん」のような素晴らしいライブラリがあるんですが、AS2向けでシンプルなのは見つからなかったので
自作で
[js]
new Sequence(
new Wait(1),
new XMLLoad(‘hoge.xml’),
new Wait(1),
new FunctionJob(this,this.normalfunc)
).start();
[/js]
こんな感じで書けるように。
もともとのソースコードのコールバック関数をそのまま弄らずシーケンス処理に組み込めるように
関数をひとつのスレッドとして利用できるようにしたのが正解でした。
非同期の整理のつもりでスレッドライブラリを作りましたが、メソッドが集中しやすいコントローラー系クラスの処理分散にも効果を発揮してウハウハ。
時代遅れのAS2なので、気合いをいれて拡張していくつもりはサラサラないけど、
気が向いたら公開したいですね。
ソニーの動画共有サイト「eyeVio」がリニューアルされました。
動画のプレイヤー部分を引き続き担当しています。
それからHTMLコーディングとCSSも、ベース段階でやっています。
今回のリリースから、フリーランスでやってます。
ActionScript2での開発の話だけど、
大抵どんなプロジェクトでもディレクトリ構造が同じになってきた。
ちょっと晒してみる。
他の人はどういう風なのかな?
- com
- func09
- event(イベント系の親クラスが入ってる)
- logging(俺ロギングAPI)
- utils(俺便利クラス群)
- :myproject(プロジェクト名)
- bussines(共通で使うロジックをここに)
- compornents(UICompornentを継承したUIはここに)
- model(モデル系)
- service(外部とのインターフェイスクラス。大抵シングルトンで実装)
- views(作ったコンポーネントをがっちゃんこするクラス。コンポーネント同士のメディエイターの役割だとか、リサイズ時の制御だとか)
Main.as(コントローラークラス。モデルとビューをつなぐ部分だったり、外部向けのAPIを持つ)
僕はあんまりモーションモーションした案件がないので、CairnGormなんかを参考にしてます。
UIパーツはほぼ全てUICompornentを継承してコンパイルしておきます。
こうするとテストもしやすいし、おのずと結合が緩くなりますので。
バイディングもできるしね。
いいことばかりじゃないけどね。
さて仕事仕事。
Posted in
actionscript2.0,
flash,
日記 at 2月 20th, 2008.
No Comments.
http://eyevio.jp/
eyeVioの動画プレイヤーの新バージョンがリリースされた模様。
Flashでプレイヤー作成を引き続き担当しました。
動画はうちの猫です。
今回からプレイヤーのサイズが変更可能になっていて
そのロジックがちょっとおもしろいです。使ってる人には全然おもしろくないかもですが
作ってる側としては楽しかった。
最近xacti hd1000を買ったのですが、Youtube、Googleビデオと比較して
明らかに画質が良いので、別に自分で作ってるからというわけでもなく
eyeVioを使っています。オススメです。
AS2での話だと思うんだけど
[js]
NaN >= 1; // true
[/js]
この判定おかしくね?
調べたらここにあったよ。
http://www.fumiononaka.com/TechNotes/Flash/FN0108015.html
NaNを使った数値の比較演算子(<=,>=)は、なんか変な感じとのこと。
FLVのダウンロード状態を監視するタイマーが
[js]
var loadedRatio:Number = ns.bytesLoaded / ns.bytesTotal;
if( loadedRatio >= 1 )
{
//監視終了
}
[/js]
みたいな判定式で抜けるようなプログラムを書いていたんだけど
数回に1回、タイマーが1発目で終了しているバグが見つかって
追求したらNaNのせいだった。
これからは、NaNが入る可能性があるNumber型の変数を条件に使う場合は
[js]
if( !isNaN(loadedRatio) && loadedRatio >= 1 ){}
[/js]
とするようにしよう。
ちなみにAS3は期待通りの挙動らしい。
Posted in
actionscript2.0,
日記 at 11月 16th, 2007.
No Comments.
やっとFlex2に本格的に触れそうなので
環境を用意しました。
FlashDevelop3を使うにあたり、英語でも全くなんの問題もなかったのですが
リファレンスのURLをちょいちょい変更したついでに日本語化もしました。
よろしければどうぞ。
mainmenu.zip
MainMenu.xmlを
C:\Program Files\FlashDevelop\FirstRun\Settings
に放り込んでください。
当然、オリジナルのファイルは要バックアップです。
enjoy!
つい3日前くらいまで、自分がFlash Lite2.0を触ることになるとは思っていなかったんですが
仕事で開発することになったので、メモ。
まずここから「Flash Professional 8 用 Flash Lite 2 アップデート」をダウンロードして
Flash Professional 8で、Flash Lite2.0を開発できるようにしておきます。
http://www.adobe.com/jp/support/flash/downloads.html
それからLite2.0の情報を集めます。
http://www.dango-itimi.com/blog/archives/2006/000912.html
http://www.trick7.com/blog/flash_lite/
この辺のブログが参考になりました。
各端末の情報とか
ソフトバンク端末情報
ドコモ端末情報
au端末情報
Read More…
Prototype.jsのEnumarableをAS2に移植中。
あ、あとObject.extendも
ObjectUtil.mixin()
みたいな感じで移植したんだが、これは使えるなぁ。
Read More…
FlashDevelopっていうIDEがすげー。
ここを見れば完璧
http://weekbuild.sakura.ne.jp/trac/wiki/as3/FlashDevelop
これまでFlashの開発ツールは
・Flashアプリ
・Flex2Builder
・SEPY
・Eclipse
で、
AS2ならSEPY、AS3ならFlex2Builderを利用してたんだけど
両方ともFlashDevelopに移行したい意向です。
Read More…