Entries of flash

Twitterクライアントを、AIRに対応させました。

ApolloTwitterClientをAIRの最新ランタイムに対応させました
パソ買い換えてソース移行すんのが面倒で放置してました。
旧バージョンにあったカーソル消える当の微妙な不具合は、Flex3でコンパイルしたら綺麗さっぱり消えました。フレームワークのバグだったのかな?大分快適です。

しかし、Flexのスキン設定を勉強するのが面倒すぎて、完全にビジュアル部分つくる気力がなくなった。
どっかで本格的なFlexのスキニング講座とかってやってないんすかね、受講料1万円ぐらいまでなら有給とってでもはせ参じるんですが。

AVM1も2も強引にロードするLoaderクラスを作ったよ

AS2用swfもAS3用swfもどっちもAVM2用としてロードする強引なローダークラスを作った。
ソースはsparkプロジェクトにうp。
圧縮、無圧縮swfどっちにも対応。

net.fladdict.display.AVM2Loader

バグとか適当な実装に気づいたら知らせてくれると嬉しい、直してくれるともっと嬉しいデス。

AVM2にAVM1のSWFを強引にロードするやり方

Flash8でコンパイルしたSWFをAS3コンテンツからロードすると、ムービーはAVM1によって再生されてしまいAS3からアクセスできない件について。

以下の2つの条件下で、AS2のSWFを強引にAS3のSWFでロードしてMovieClipサブクラスとして使用、全プロパティ、子MCにアクセスする方法を発見。できるらしいって噂は聞いてたけどホントにでけた。

・無圧縮形式でパブリッシュしていること
・ムービー内にAS2で書かれたコードがないこと

まずAS2のSWFをURLLoaderでバイナリ形式でロードする。

・ByteArrayの[3]番目のインデックスを9に書き換える。
・ByteArrayのインデックス20~30あたりのどっかに、01, 00, 44, 11, 00 という順番にintが並んでいる場所があるので見つける。
01, 00, 44, 11, 08 に書き換える。

Loaderで書き換えたバイトコードを読み込む。
これでおk。

<追記>
be interactive情報で、最初の01は単なる総フレーム数とのこと
修正しました。

setPixelにブレンドモードをつける

ピクセル操作するときにsetPixelやsetPixel32に、ブレンドモードあったらいいなぁと思うことがよくある。
だけどコレ全部実装すんの正直メンドイ。

なんで、まず1ピクセルのビットマップにsetPixelして、それからdrawでブレンドモードつけて描く手法を考えた。

public function setPixel(x:int, y:int, color:uint, blendMode:String="normal"):void{
 if(blendMode=="normal"){
  _target.setPixel(x,y,color)
 }else{
  var tempBmd:BitmapData = new BitmapData(1,1,false,color)
  _target.draw(tempBmd,new Matrix(1,0,0,1,x,y),null,blendMode);
 }
}

かなり楽チン。けど遅いんだろうなぁ・・・
とりあず試してみて、遅かったらまじめにブレンディングの式を全実装しよう・・・

DotPattern

dotpattern.gif

ドットパターンのジェネレータークラスを描いた。

[[1,0,0],[0,1,0],[0,0,1]]

のように配列でピクセルを指定することで、任意のドットパターンでビットマップをフィルすることがきる。もちろん、基本的なパターンは定数として宣言してある。

var dp:DotPattern = new DotPattern( false, pattern, DotPatterns.LINE_H_1_1 );

波形ジェネレーター

generators.jpg

sketchbookライブラリのgeneratorsには、Sine波から波形合成器まで9種類の波形ジェネレーターが用意されている。

確率による処理、値の分岐 メモ

今日はちょっと体調悪いのでスケッチはなし。

一定の確率で処理が分岐したり、一定の確率で値が入れ替わるような処理があると、コードで絵を描くときにカオスやフラクタルを作り出しやすくなるんだけど、楽に記述できないかなぁ。

var col0 : ColorSB = new ColorSB(0xff0000);
var col1 : ColorSB = ColorSB.createRGB(255, 30, 67);
var col2 : ColorSB = ColorSB.createHSB();

var rnd : RandomPciker([col0, col1, col2], [2, 1, 0.5])
trace( uint(rnd) );

みたいに書くと、2:1:0.5の割合でランダムに色が出てくるとかどうだろう。
使いやすいかな。

変数を渡した場合、指定した確率で処理が選ばれて実行されて、結果がもどってくる。
どうだろう・・・

3:1でメインカラーと補色をランダムに配置とか、25%で方向転換とかそういう系で便利そうな気はする。

8のswfを強引に9として扱う

意外とやきもきしていたAVM1SWFの取り扱いに、デンジャラスなハックを発見。

Flash8でパブリッシュしたSWFをとりあえずByteArrayで読み込んで、一部を書き換えればAS3からアクセスできるようになるらしい。

リンク先サンプルの書き換えは、ステージサイズ依存になっているので、汎用コードじゃないけど、もうちょっとみんなが調べれば確実な方法が判明しそう。

danielhai.com : Convert *some* Flash 8 Movies to Flash9 Movies at runtime

作品をSVGでエクスポートする

sojapanese_svg.gif

シェイプをSVGファイルとして入出力するクラスを作った。

これによってFlashで動的に生成した形状を、ベクターデータとしてイラレに持ち込むことがでできる。もちろん逆にイラレで作ったデータをSWFで動的に加工することも可能。

WEBの中に限定されていたFlashのコンピューテーション・ビューティーが、印刷レベルのデザイン素材として再利用できる可能性というのはものすごくスリリングだ。 昔からの夢であったFlashでパターンジェネレーション→布に転写→プロダクト・ファッション分野への応用というアイデアが妄想ではなくなった感じ。

ちょうどロンドンで同期の奴等が卒業する年なので、なんかできたら面白いなぁと。手始めにTシャツ作ってもいいかもしれない。

metab その4

metab_study8.jpg

なんというカオス。
昔の実験で悟ったのだけど、ビットマップ描画系の実験は、なんかの拍子にハウリング的なロジックを作成すると、とたんに制御不能・予測不能の世界に突入する。

画像処理後に、コードで強制的にトーンや色補正を行って絵を強調してみた。flashの表現としては未踏分野っぽい雰囲気。あんまり惹かれないフィールドだけど、無限の平面が広がってそうな予感。