— boreal-kiss.com

Archive
Tag "FlashPlayer10"

[Flash] Die Kartoffel
» [Flash] Die Kartoffel (要Flash Player 10)
» source

BitmapData.perlinNoise()でそれっぽいランダム地形生成。にゃあプロジェクト – ウェブログ – BitmapDataでノイズ生成 (2)が参考になった。Kartoffel = じゃがいも。

Read More

[Flash] Multi Tori
» [Flash] Multi Tori (要Flash Player 10)
» source

なんかマニキュアみたいなの出来た。

Read More

» Demo (Spotlightのとこ。要Flash Player 10)

Spark project – /as3/Astro/SpotlightFilterに一式をアップしてあるのでご利用ください(MITライセンス)。spotlight.pbkファイル作成者のRyan Phelanに確認したところ、pbkファイルを改変する場合はその内容もアップデートに含めたいので是非教えてくれとのこと。SpotlightFilter.as作成で参考にしたのはSpark project – /as3/Astro/RadialBlurmutaさんのソースは勉強になるのでちょくちょく参考にさせてもらっている。とりあえずSpark project参加当初の目標(コミットする)は達成できた。

Read More

ローカルから画像をロードしたらそれっぽく陰影を付けて立体的に見せてくれるアプリケーション。気に入ったタイミングでスナップショットボタンを押せばそのときの状態の画像がローカルマシンに保存されます。タイミング難しいけど。

» Tube3D (要Flash Player 10)

Read More

[Flash] スペースチャンネル5 (version)
» [Flash] スペースチャンネル5 (version) (要Flash Player 10)
» source (抜粋)

Flash Player 10の3Dでは陰影を表現する機能がないので、テクスチャにあらかじめ陰影処理を施してそれっぽく見えるようにした。使ったのはSpotlight Pixel Bender Filter | Ryan Phelan。名前の通りスポットライト効果を施すフィルターでなかなか面白い。チェック柄のBitmapDataにスポットライト効果を施しただけで立体的に見えるようになった。残念な点はフィルター設定のパラメータが異常に多いところ。Pixel Bender Toolkitで試行錯誤しても使用用途が不明なものがある。

[Flash] スペースチャンネル5 – boreal-kiss.comのテクスチャクラスにスポットライト効果のShaderFilterを施しただけなので、ソースはShaderFilterに関係する部分だけ抜粋してある。

Read More

[Flash] スペースチャンネル5
» [Flash] スペースチャンネル5 (SWF) (要Flash Player 10)
» source

Graphics.drawTriangles()とテクスチャマッピングスタディ。元アイデアはFlash 10, Part 4 of testing drawTriangles, Old-school Tunnels « Pixeleroより。簡単に説明すると円錐っぽい形状の多面体の底(とんがりコーンの底)から内側を見ている状態で、多面体の各頂点をxy座標方向に曲線的に動作させつつ内側に貼られたテクスチャのUVT座標を刻々と変化させているだけ。これだけで自分がトンネル内を進んでいるように見えるから驚き。”old-school”と題されているけど古典的な手法なのかな?note.x | [Away3D] Tunnelでも同じようなムービーがある。

flash.geom.Utils3Dクラスを初めて使ったが、これのおかげで3D座標計算部分がソース内に入り乱れなくなったので良い感じ。なお本家のソースは死ぬほど見づらく常人には解読不能なので、スクラッチから書き直した。コメントなどあんまり書いていないけど10倍は読みやすいと自負している。

Read More

[Flash] パワースペクトル
» [Flash] パワースペクトル (SWF) (要Flash Player 10、音注意)
» ソースコード

Flash Player 10から音を生成できるようになったのでそのテスト。単周期のサイン波を生成してそのパワースペクトルをSoundMixer.computeSpectrum()で表示。ダイナミックサウンドについては情報がまちまちなので完全には理解できていない。が、Saqoosha.net :: SoundMixer.computeSpectrum の FFT モードの周波数帯に書いてあるように0-11kHzの範囲でスペクトルが表示されているので結果はおかしくない、と思う。スペクトルに幅がでちゃってるのは生成されたサウンドに問題があるのかフーリエ変換の精度に問題あるのか不明。

Read More

[Flash] サウンドスペクトラム
» [Flash] サウンドスペクトラム (SWF) (要Flash Player 10)
» ソースコード

ロードボタンでローカルマシンのMP3を選択後演奏、同時にサウンド生波形を円上に配置する。周波数ごとに配置すると面白い分布図になるのではと予想。キックが重い音響系など、できるだけ音に空間的広がりが感じられるものをロードすると面白い波形が見れるはず。FileReference.load()経由のmp3の読み込みには例によってライブラリを使用している。詳細はFileReference.loadでサウンドをロードするライブラリ – boreal-kiss.com
を参照ください。

2008/10/23

unbland.net blog – Pixel Bender で放射状ブラー(ズーム&回転)使ったらなんか等高線っぽくなってかっこよくなった!マウス位置が放射中心になります。
» [Flash] サウンドスペクトラム (version) (要Flash Player 10)
» ソースコード

Read More

これは知らないとはまる。Filereferenceオブジェクトへの参照をローカル変数の受け渡しで扱っている場合注意が必要。ローカル変数のみを使用する場合ロードが中断される可能性がある。Flash Player 10 (Astro)のAPIはまだ日本語になっていないようだったので以下を引用するが同じことがFilereference.load()にもあてはまる。

FileReference オブジェクトがスコープ外に移動した場合、そのオブジェクトに対して完了していないアップロードまたはダウンロードは、スコープから離れた時点でキャンセルされます。アップロードまたはダウンロードの続行を期待できる限りは、FileReference オブジェクトがスコープ内にあることを確認してください。

Adobe® Flex™ 3 リファレンスガイド

以下にFileRefarence.load()が正しく完了する場合と完了しない場合の二種類の例を挙げる。どちらも”Load”ボタンを押すとローカルから画像を選択できるようになり、画像を選択するとステージにその画像が表示されるという構造になっている。両者の違いはFilereferenceオブジェクトを扱う変数がローカル変数のみかそうではないかだけである。

FileReference.load()が成功する場合

FileReferenceオブジェクト変数をクラスプロパティで定義しているため(_fr)クラスファイル内でFilereferenceオブジェクトのスコープがはずれることはない。そのためボタンクリックでローカルから選択された画像はFileReference.load()で正しくロードされキャンバス(_canvas)に表示される。

<!-- FileReference.load()が正しく完了する例 -->
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    
    <mx:Button label="Load" click="onClick(event)"/>
    <mx:Canvas id="_canvas"/>

    <mx:Script>
        <![CDATA[
            import flash.net.FileReference;
            
            //クラスプロパティとして定義
            private var _fr:FileReference;
            
            private function setListeners(target:FileReference):void{
                var fr:FileReference = target as FileReference;
                fr.addEventListener(Event.SELECT,onSelect);
                fr.addEventListener(Event.COMPLETE,onComplete);
            }
            
            private function onClick(e:Event):void{
                _fr = new FileReference();
                setListeners(_fr);
                _fr.browse();
            }
            
            //関数を抜けてもFileReferenceオブジェクトへの参照"_fr"はスコープ内
            //そのため関数を抜けてもFileReference.load()は続行される
            private function onSelect(e:Event):void{
                var fr:FileReference = e.target as FileReference;
                fr.load();
            }
            
            private function onComplete(e:Event):void{
                var fr:FileReference = e.target as FileReference;
                var loader:Loader = new Loader();
                loader.loadBytes(fr.data);
                loader.contentLoaderInfo.addEventListener(Event.INIT,onInit);
            }
            
            private function onInit(e:Event):void{
                _canvas.rawChildren.addChild(e.target.content);
            }
        ]]>
    </mx:Script>
</mx:Application>

FileReference.load()が失敗する場合

一方、以下の場合FileReferenceオブジェクト変数はローカル変数でしか定義されておらず、Filereferenceオブジェクトのスコープが完全にはずれる箇所がある(onSelect()を抜けた直後)。その時点でFileReference.load()はキャンセルされるためロード完了によるEvent.COMPLETEが発動しない(_canvasに画像が表示されまでに至らない)。

<!-- FileReference.load()が途中でキャンセルされる例 -->
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    
    <mx:Button label="Load" click="onClick(event)"/>
    <mx:Canvas id="_canvas"/>

    <mx:Script>
        <![CDATA[
            import flash.net.FileReference;
            
            private function setListeners(target:FileReference):void{
                var fr:FileReference = target as FileReference;
                fr.addEventListener(Event.SELECT,onSelect);
                fr.addEventListener(Event.COMPLETE,onComplete);
            }
            
            private function onClick(e:Event):void{
                //ローカル変数として定義
                var fr:FileReference = new FileReference();
                setListeners(fr);
                fr.browse();
            }
            
            //関数を抜けるとFileReferenceオブジェクトへの参照がスコープ外になる
            //そのため関数を抜けるとFileReference.load()は完了前にキャンセルされる
            private function onSelect(e:Event):void{
                trace(e);
                var fr:FileReference = e.target as FileReference;
                fr.load();
            }
            
            private function onComplete(e:Event):void{
                var fr:FileReference = e.target as FileReference;
                var loader:Loader = new Loader();
                loader.loadBytes(fr.data);
                loader.contentLoaderInfo.addEventListener(Event.INIT,onInit);
            }
            
            private function onInit(e:Event):void{
                _canvas.rawChildren.addChild(e.target.content);
            }
        ]]>
    </mx:Script>
</mx:Application>
Read More

Dot3D for Flash Player 10

AIRのFileStream.writeBytes()がAstro(Gumbo)のFileReference.save()にかわっただけなので移植は超簡単。問題はこれがFlash Player 10正式版になっても稼働するかどうかだ。(昔作ったやつは軒並み死亡)

» Dot3D for Flash Player 10

Read More