[AS3]PolarDistortクラス

Tags:

Keith PetersのBIT-101 Blogで配布されている画像等を魚眼レンズのように歪ませるカスタムクラスが手軽で面白い。例えばこの画像が

Hay Bails - Full Panoramic
Hay Bails - Full Panoramic on Flickr - Photo Sharing!

こうなる。

Hay Bails - Polar Distorted

歪ませるターゲットはDisplayObjectを継承していれば何でもOKなので、例えばテキストなんかにも適用できる。変形のターゲットを決めて(下の例の場合 var img:Bitmap)、render関数を用いて書き出し用BitmapData(下の例の場合 var bmpd:BitmapData)にレンダリングするだけ。面白いのはrender関数の第四引数の選び方。trueで画像の上側を円中心(例の写真の場合、空側を円中心)、falseで円外側に書き出す。ここの選び方で出来上がったイメージの雰囲気がガラっとかわる。

package {
    import flash.display.Sprite;
    import flash.display.BitmapData;
    import flash.display.Bitmap;
    import com.bit101.PolarDistort;

    public class PolarDistortDemo extends Sprite{

        [Embed(source="img/panoramic.jpg")]
        private var IMG:Class;

        public function PolarDistortDemo(){
            var img:Bitmap = new IMG();
            var pd:PolarDistort = new PolarDistort(img);
            var bmpd:BitmapData = new BitmapData(400,400,true,0x00FFFFFF);
            pd.render(bmpd,0,0,true);
            addChild(new Bitmap(bmpd));
        }
    }
}

危険サイトのJavaScript等を無効にするFirefoxプラグイン「NoScript」で非快適なインターネットを

Tags:

得体の知れないサイトの<script>や<iframe>等を実行させないようにするFirefoxのプラグイン「NoScript」というものが話題になっていたので使ってみた。これを「正しく」使えば、某サイトに不正にインジェクションされたscript等でオンラインゲームのアカウント情報が盗まれたりすることは無くなる。プラグインの場所は以下の通り。

Firefox 用アドオン > おすすめの拡張機能 > NoScript

使ってみた感想は「不便」。これでいつも巡回してるサイト見てごらんよ。おそろしい数のscript(Google adsenseやらアクセス解析やら)が表示不可になってて、何にもできない。友達のブログなんて10個ぐらい別ドメインのscript埋め込まれてて、普段見ていた状態に復元するためにはそれらを手動で表示許可していかないといけなかった。さらにAjaxで動作してる部分なんかも動かなくなるもんだから(例えばはてなブックマークのタグ一覧表示)、初見でブラウジングしているサイトの本来の見た目や利便性が見えてこない。その結果、自分の欲するサイトなのかどうなのか判断をミスる可能性が出てくる。で、結局面倒くさくなって「全てのサイトを許可する」を選んでNoScriptを無効にする、のではなかろうか。一の害を避けるために百の利益を逃してもいいなら使ってもいいかもね〜。

「NoScript」という名前自体が気にいらない。すでに<noscript>という固有名詞があるのに何故重複させる。ややこしいわい。あと最後にこのプラグイン、FLASH表示設定のオンオフ機能まである。FLASHで悪さなんかできねーよ!!!

[関連リンク]
「Firefoxを使い続けるための“お勧め”設定」 , NoScriptを組み込んでいないFirefoxは使用停止に:ITpro

[追記2008/05/02]
強制的に再生されるEmbedタグ等で埋め込まれたmp3を遮断できるので意味なくはないっぽい。例えばyoupy.tumblr.comを開いて恥ずかしい思いをしなくて済む。(ほんとに恥ずかしいので音量注意)

[FLASH]geoms

Tags:

3Dオブジェクトの頂点座標を記述したXMLファイルを読み込んで描画させるFLASHを作ったので多面体を色々作成中。面白い形状ができれば随時展示していく予定です。

[FLASH]geoms
[FLASH]geoms

[AS3]getter/setterメソッドを使う場合のクラスプロパティ名の名付け方

Tags: ,

理想的にはクラス内のプロパティは全てprivateにして、クラス外部からプロパティに直接アクセスさせず、かわりにgetter/setterメソッドと呼ばれる関数を用いてプロパティの参照や変更を行うことがOOPで推奨されてるらしい。直接アクセスされて不都合がある理由はよくわからんが、こういった慣例には従っておいた方がよいだろう。

オブジェクト指向プログラミングを実践する際には、クラスのプロパティに直接アクセスすることは推奨されません。クラスではよく、特定のプロパティの読取り用のアクセスに”get”メソッド、書込み用のアクセスに”set”メソッドを定義するということが行われます。

FN0311009 - 黙示的なget/setメソッド - Flash : テクニカルノート

ところでこのsetter/getterメソッドで使う関数名、なんと操作したいプロパティ名と同じ関数名をつけれない。これじゃ使い物にならんがな、と思ってたけどKeith Petersがプロパティ名の頭にアンダースコア(”_”)をつける方法で解決してた。例えばmessageというプロパティにsetter/getterメソッドを用いる場合、こんな感じ。

package{
    public class SomeClass{

        private var _message:String;

        public function SomeClass(){
            //Some codes here.
        }

        public function set message(s:String):void{
            _message = s;
        }

        public function get message():String{
            return _message;
        }
    }
}

これで、クラス外部でこのプロパティ値を変更したい場合はsetter関数経由で

var sc:SomeClass = new SomeClass();

//same as sc.message("Shut the fuck up!!");
sc.message = "Shut the fuck up!!";

クラス外部でこのプロパティ値を参照したい場合はgetter関数経由で

//same as trace(sc.message());
trace(sc.message);

なるほど、getter/setterメソッドを用いる場合のプロパティにはアンダースコアを付けるように決めてしまえば、以下のようにソースを見て混乱することもないし、しかもAS2をやってる人には馴染み深いしね。いいチップだ。

getter メソッドと setter メソッドは便利ですが、多用しすぎるとコードの保守が困難になる場合もあるので注意が必要です。

adobe - getter メソッドと setter メソッドについて

[FLASH]太鼓

Tags:

曲線を複数つかって面を表現するのが面白い。単純な材料による予期せぬコンプレックス、というか。これはなんとなく和太鼓のちっちゃいやつ(名前知らん)を最初のイメージとして出来上がったやつ。左のスライダーで回転速度、右のスライダーで太鼓の底辺位置を決定。例によって多関節ラインを用いているので底辺の位置によっては面白い表面が描けるかも。ロクロみたい。あと最近シアン(#00FFFF)がお気に入りカラー。

[FLASH]太鼓
[FLASH]太鼓

Next Page →