メイン

2006年12月07日

spliceで軽量化

200コぐらいのインスタンスをfor文で attachMovie してぐりぐりしてたら、そのうち動作が重くなる。これは予想していたので、ステージをはみ出たオブジェクトを removeMovieClip 。これでなんとかしのいできた。
attachMovieしたインスタンスのプロパティは配列に入れてそれぞれあれこれしてたから、この配列リテラルも消しちゃったほうがいいはず。

var obs:Array = new Array();
for (var i:Number = 0; i < count; i++) {
var obj = attachMovie("obj" , "obj"+i , i);
obj._x = Math.random() * Stage.width;
obj._y = Math.random() * Stage.height;
obj.hoo = hoo;
obj.bar = bar;
.....
obs.push(obj);
}

obj.removeMovieClip();
obs.splice(i,1);

こんな感じでいらなくなったものはspliceしていく。配列からspliceすることで動作に影響があるのどうか実験してみたけど、動作が重くなる主原因はどう考えても描画系にありそうなのはまいちがいない。
でもメモリやCPUの負担は減るはずだし、多次元配列なんか使っていたらもっとクライアントマシンにやさしくなるんじゃないかな。

という訳で要らなくなった配列インデックスは面倒がらずにspliceしましょう。

2006年12月04日

割った余りが欲しいとき。

FlashのActionScriptであまり使うことのない数学演算子を使ってみた。

剰余演算子。

他の言語でももちろん当然のように組み込まれているこの「剰余演算子」。AをBで割ったときの余りを求めたいときに使う。

var numA:Number = 2.5;
var numB:Number = 2;
trace(numA % numB);

理屈はわかるけど、いったいどんな場面で使うのかまったく見当がつかなかったので調べてみた。
カレンダーや時間の計算に使うらしい。なるほど。


ほかに思いついたのが、値が偶数か奇数かを判断する時に使えそうだということ。
2で割ってその余り、つまり剰余が0か1かを判断すればいいことになる。0なら偶数、1なら奇数というぐあい。ただし整数に限るけど。

でもやっぱりあんまり使わない。

2006年11月23日

RosettaでFlasが10%高速に。

Mac OSを 10.4.8 にアップデートしてから体感的な処理スピードが上がった、という話を先日したけど、
AdobeでFlash Product Manager をしている Mike Downey さんが自身のブログで「確かに速くなってるよ」と実証している。

Adobeのエンジニアに頼んでFlash Professional 8をRosettaマシンで実測してもらったら、次のような結果に。

起動時間は変わらない。
パブリッシュの時間は10%高速になった。

ブログのエントリーだからもちろんAdobeの公式声明とは違うけど、計測してもらうまでもなく体感的にパブリッシュの時間が短くなっているのは実感できる。
特にビットマップのイージングやアルファ変更を伴うムービー、つまり実サイズのデカイ.flaをパブリッシュすると、格段に速くなったと思う。

彼も「これでFlashがネイティブ化したらどんな速さになるんだ!?」と喜んでいる。

でもちょっとまて。これはただ単に今までが果てしなく遅かっただけじゃないか…。

2006年11月16日

FLASH DEN

自作のFlashパーツを売り買いするマーケット「FLASH DEN
Flash作品以外にも、オーディオ、ビデオ、フォント素材を、扱っている。
要は売る人と買う人の橋渡しをして、差額で儲けるという構造。
1FlashDenクレジットが1USドルに相当する。提供した素材が売れたら25%からスタートして最大50%までがバックされる。


作品数はまだ少ないけど、これからが楽しみ。単に閲覧しているだけでも勉強になるし。
特にビデオ素材は自分で作るよりも早くて効率的だろう。

flashden.png

ロゴの後ろから見えているシッポはアノのキツネ?

2006年11月09日

Flash Playerがオープンソースになった

多くの人が待ち望んでいたことでしょう。Flash Playerのオープンソース化がついに実現した。
Adobe および Mozilla Foundation、オープンソースの Flash Player スクリプトエンジンを発表
これは同時にActionScript Virtual Machine もオープンソースになることを意味しているわけで、クラスのAPI化が進んでいる状況で、本当の意味でオープンになった。Apolloの動きはこれだけじゃ済まないはず。これからもっと動きがあるぞ。きっと。

SpiderMonkeyに合流するということは、ブラウザで対話型に開発できるわけで、言語体系も似ているから最もいい結婚相手といえるだろう。

2006年11月06日

外部変数の読込

.swf外部のテキストファイルから変数を読み込む処理を書いていてちょっとつまづいたことをメモ。
LoadVars.load()で外部から読込み。
「&」で連結した複数の変数を読込んで、それを、.swf内で処理後、CGIに返す。

このとき「&」で連結された変数は逆順で連結して送信されることに気づくまでちょい時間がかかってしまった。

「逆順」というのが盲点。

vars="hoo=boo&bar=per&koo=poo"

といった外部変数は、

koo=poo
bar=per
hoo=boo

の順になるということ。たぶん常識なんだろうけど。

2006年11月04日

document.saveAndCompact()

昨日から他の人が作業した.flaファイルを開いて修正作業をやっている。

オリジナルをデュープして作業していたにもかかわらず、いつのものクセで保存を繰り返していたら.flaファイルのファイルサイズが保存するたびにどんどん肥大化してきた。たいした修正をしていないのに。
あまり気にせず作業をしていたら、パブリッシュしたMCの動きまで怪しくなってきた。

こんな時は、別名保存すればほとんど直るし、[保存して最適化]という便利なコマンドもある。ヒストリデータってそんなに容量があるとはおもえいなのにな。
むかし、FLASH 5の頃に同じことがたびたびあったけど、FLASH 8になってからこの症状がでたのは初めて。

元の.flaファイルに問題があるのかもししれない。
静止テキストのまま文字を埋め込んであったりライブラリには「トゥイーン 20」といったデフォルトのシンボル名がつけられていたりしているあたり、オリジナルデータの作り方に原因があるのかと疑ったりもしたけど、調べようがない。

WinやMac、そしてさまざまなバージョンのFlashで開いて修正作業をしていくと、たまにこんな状態になることがある。
できることはあまりないけど、[保存して最適化]が最後の頼み。

直った。動かなくなったMCも元通り動くようになったけど、「保存して最適化」って「最適化して保存」の間違いじゃないの?

2006年10月31日

アルファチャンネル付きJPEG

ビットマップイメージは重い。ピクセルの集まりだからファイルサイズが大きくなる。しかもちょっと前までFlashでビットマップを扱うのはいろいろと細かいTipsが必要だった。
動作が軽快とはいえないFlash Playerで再生することを考えると、スムースな再生のためには重いビットマップデータを扱うにはそれなりに工夫をするのは当然だった。

Flashに切り抜き画像を持ってくる場合。
いつもは、アルファチャンネル付きのPNG形式で書き出して、そいつをFlashに読み込んでいる。
読み込んだイメージをシンボルにしたあと、ビットマッププロパティを開いてロスレスを選択している人が多いと聞いた。
確かに、読み込んだPNG形式やPSD形式の画像ファイルがアルファチャンネルを含んでいるデータなら、気持ち的にロスレスを選択してしまうのが自然な考かも。
JPEGはアルファチャンネルをサポートしていないからと、先入観がかえってじゃまになる。

そんなときは、Flashのビットマッププロパティを開いて、JPEG圧縮してしまうに限る。その画像がアルファチャンネルつきの切り抜き画像でも大丈夫。FlashはアルファチャンネルつきのJPEG圧縮をサポートしている数少ないソフトだから。
これでファイルサイズのダイエットにもなって喜ばしい限り。
ただしスムージングは処理が重いのでOFFにしておいたほうがいいかも。

2006年10月13日

サイドバーはFlashでできています

期待感が高まっているらしい「wwcity」。
サマンサ・タバサが展開するオンラインショッピングサイトは、グランドオープニングが12月なのにもかかわらず、すでに各方面で話題になっています。
街をメタファーしたコンセプトはある意味懐かしい。いわゆるclick and mortarの典型的なタイプなのだけど、基本コンセプトに「ネットの便利さがブランド価値を毀損する」を掲げているだけあって、リアル店舗の雰囲気をできるだけ損なわないようにするというどりょくが感じられる。

ブランド価値を端的に表現するためにあるリアルショップは、店内の世界観を大切にする。わかりやすくいえば敷居の高さを演出しているわけだ。一方ネットショップはいくらどんなに演出を施しても画像を表示しているPCのモニターがキタナイ自宅では、はたしてそんな世界観、空気感が再現できるかどうか、利用者の反応がどうなるかが楽しみ。


インターフェースでおもしろいのが画面左右にあるサイドバー。

普段は閉じた状態で左右に細くおさまっている。クリックすることで開いてコンテンツにアクセスできるというナビゲーション。
最近のモニターは横長のワイド液晶が主流になってきているのを利用したうまいアイディア。
JavaScriptで実装しているのかと思いきや、普通にswfでした。
Mac OSのサイドバーはウインドーの外側に開くのを見てヒントを得たのかもしれない。
サイドバーは頻繁に更新されるものだから、コンテンツは外部xmlから読み込んでいるのだろう。

2006年10月11日

見開きの本のメタファーFlash

一日中Flash8で長大なトィーンてんこもりの.flaファイルを修正。
疲れたアタマを休めるために、サイト巡りをしていて見つけたイカしたサイトを紹介w。

SK Knights

韓国のサイトはデザイン的に力の入った見るべきものがおおく、収穫も大きい。
どうやらバスケチームのサイトらしい。見開きの本のメタファーを採用したデザインは手書き文字タイトルやリングノートの切れ端風背景画像でやんちゃなテイストを演出している。
flvが埋め込んであったり、細かいonMouseのシカケが隠し込んであったり、相当にテマをかけた制作をしている。一方で手書き風イラストとビットマップ画像の使い分けにいまひとつあか抜けなさも残してある。このあたりはもしかしたら、確信犯的に意図してスキを作っているのかも?とも思わせる。

表示が重いのは、flaコンテンツ(なんとBGMがヤングマンなのだ、萎え…)のデータ量だけではなさそう。ダウンロードストリームを見ていると、サーバーのレスポンスに問題がありそうだ。

どこかで見たことあるような…、そんな既視感いっぱいでも、見て引き出しにしまっておくだけの何かを感じることができるサイトでした。それと同時に手間を惜しまないチカラワザな動きにパワーも十分もらいました。