プログラミングやる前に先お風呂はいっちゃいなさい

69月/080

グッと来たオブジイヤー2008

グッと来ました。
何が、グッと来たって、Flash Player 10のカスタムフィルタ機能です。

今日、初めて実装してみたけど、自分で作ったフィルタが差し替え可能で使えるんだぜ?

なんだか、もう、DMCの社長言うところの、濡れまくりです。

でも、結構苦戦しました。最初こんなコード書いてた。

  1. var bitmap:Bitmap = BitmapLoader.getBitmap("test.png");
  2. var loader:URLLoader = new URLLoader();
  3. loader.dataFormat = URLLoaderDataFormat.BINARY;
  4. loader.addEventListener(Event.COMPLETE, function (evt:Event):void {
  5.  var shaderFilter:ShaderFilter
  6.      = new ShaderFilter(new Shader(loader.data as ByteArray));
  7.  bitmap.filters = [shaderFilter.clone()];
  8. });
  9. loader.load(request);

でも、なんだか上手く行かない。

ステップ実行してたら、なんだかshaderFilter.clone()がnullを返してる。
え、もしかしてcloneは実装されてない?

ていうか、bitmap.filtersってそのままShaderFilter入れてもいいの?
とか思って、直入れてみることにしたら、動いた。

  1. var bitmap:Bitmap = BitmapLoader.getBitmap("test.png");
  2. var loader:URLLoader = new URLLoader();
  3. loader.dataFormat = URLLoaderDataFormat.BINARY;
  4. loader.addEventListener(Event.COMPLETE, function (evt:Event):void {
  5.  var shaderFilter:ShaderFilter
  6.      = new ShaderFilter(new Shader(loader.data as ByteArray));
  7.  bitmap.filters = [shaderFilter];
  8. });
  9. loader.load(request);

なんか、Filterって共通のインタフェースないけど、いいんだね。大丈夫なんだね。

あ、ちなみに、最初のビットマップのロードは独自クラスでやってますので悪しからず。

てことで、ひまころじーv2エンジンはカスタムフィルタを導入しました。

以上。

69月/080

Code Hilighter のテスト中

ソースコードのハイライト表示プラグインを入れたのでテストもかねて、ActionScript3でのSingletonの実装の仕方を書きます。
ちなみに、入れたプラグインはWP-Syntaxです。

これは以前のはてなのブログにポストした内容と同じです。

ActionScript3 で Singleton を実装してみた

さて、ActionScript3 ではprivateなコンストラクタが作れないので、コンストラクタの封印ができません。
つまり、コンパイルエラーでSingletonのコンストラクタ呼び出し禁止を規制できません。

ということで、妥協して、コンストラクタを呼んだ場合は実行時エラーが出るようにします。
コンストラクタ呼びまくってる奴、涙目wwww

実装するなら、こんなコードです。

public class Singleton
{
 private static var _instance = new Singleton();
 public function Singleton()
 {
  if (_instance != null)
  {
   throw new Error("Singleton::getInstanceを使ってくだしあ");
  }
  // TODO: 初期化処理を記述
 }
 
 public static function getInstance():Singleton
 {
  return _instance;
 }
}

初期化されたかどうかは、内部のインスタンスがちゃんと生成されているかどうかで判断してみた。

こんな風に書けば、最初にSingletonクラスにアクセスされた時点で

private static var _instance = new Singleton();

がちゃんと最初に呼び出されます。
恐らく、注意すべきはこのSingletonクラス内の他のstatic変数の初期化処理。

予想では多分、上から実行されるはずなので、インスタンスの生成の前に他の変数の初期化処理を書くのは意図しない結果になる可能性があります。

はーい、以上です。

69月/080

あれ、は、入らない。。あれ?えっと・・・えーと・・・

ということで、ようやく入りました。AwStats。

色々なサイトを見回り、お世話になりました。

特に僕のとこと環境が似ていた

Fedoraで自宅サーバー構築

というサイトはとても分かりやすかったです。ほんと。

 

あ、そうそう。以前のはてなでのブログでもそうでしたが、タイトルは気にしたら負けです。
それがここでのたしなみというもの。

特に内容と関係ない場合が多いです。もちろん、今回もね。

ということで、今日はせっかくの週末なので、ガリっと開発を進めます。

 

私信:フィジーのウソップへ

本日、恐らくメッセできないと思う。ただ、だめもとでオンラインしている場合もあるので。
なので、本命は明日の早朝(日本時間)にしましょう。

日本の6時にいればいいのか?