undefined

技術的系メモブログ

Arctic.jsメモ1

(function(window){

// メイン
var Main = arc.Class.create(arc.Game, {
  
  // 初期実行関数。
  // arc.Gameは_systemにarc.Systemを保存後、
  // this.initialize.apply(this, arguments); …だった気がする。
  initialize: function(params){

    // Shape作成
    var shape = new arc.display.Shape();
    shape.beginFill(0xED1A3D);
    shape.drawCircle(100, 100, 100);
    shape.endFill();	
    this.addChild(shape);
  },

  // ループごとに実行される
  // 再描画は内部で実行っぽい?
  update: function(){}
});

var init = function(evt){

  // 最初に実行する魔法の言葉
  // 幅、高さ、canvasのidの順番。
  var system = new arc.System(320, 400, "canvas");

  // ループさせるクラスと、それに渡したい引数。
  // 渡すと、initializeの引数に。
  system.setGameClass(Main, {});
 
  // 読み込もうとするデータ群を一つ読みこむたびに呼ばれる
  system.addEventListener(arc.Event.PROGRESS, function (evt) {

    // event.loaded = 現在読み込みが終わったデータ数
    // event.total = 読みこもうとするデータ群のトータル数
    arc.util.trace(evt.loaded + "/" + evt.total);
  });
 
  // データ読み込みが終わった時に呼ばれる
  system.addEventListener(arc.Event.COMPLETE, function() {});
 
  // preloadが必要ならこちら。
  //system.load(["images/bg.jpg"]);
  
  // load()しないならこっち。どちらか一方。
  system.start();
};

window.addEventListener('DOMContentLoaded', init, false);
    
})(window);

ドキュメントはいいんだけれど、サンプルに入っていたJSは煩雑に感じた…。
けど今日作ってた自分のコード見たら大差なかった。くそう。

とりあえず基本ところだけ。
arc.Display関連はまた。
というかこいつら継承して行かないといけないのが割とめんどいかもしれないのと。
system.getFPS()はあるのに、system.setFPS()がない。
変更するときは、

var System = arc.Class.create(arc.System, {
  setFPS: function(fps){
    this._fps = fps;
  }
});

ってやるか、もうそのまま system._fps=18;とかやれば変わる。
なんでsetないん…。

Singleton Patternの簡易実装

var Hoge = function(){

  // よくみるSingletonの実装
  var self = arguments.callee;
  if(self.instance){
    return self.instance;
  }

  // getInstanceから呼ばれていなかったらthrowで投げる
  if(!self.isStatic){
    throw Error(/* Error */);
  }

  // ここで呼ばれたことをリセット
  delete self.isStatic;
  return this;
};

Hoge.getInstance = function(){

  // getInstanceから呼ばれたっていう情報
  Hoge.isStatic = true;

  // constructor実行
  return Hoge.apply(Hoge.prototype, arguments);
};


var hoge = new Hoge(); // throw Error
var hoge = Hoge.getInstance();


っていうのをふと今思いついたんですが、どうなんですかね。

要素を文字列に変換。

var wrap = document.createElement('div');
wrap.appendChild(/* 文字列にしたい要素 */);
var str = wrap.innerHTML;

って感じにやればいける気がする!!
前にも度々悩んでたけど、何故これを閃かなかったのか…。

var elmToString = function(elm){
  var wrap = document.createElement('div');
  wrap.appendChild(elm);
  return wrap.innerHTML;
};

こう関数にしちゃえば楽々…なのかなあ?

WordPressにSQLite対応…。

するものに、
PDO (SQLite) For WordPress
を入れればいいことはご存知かと思いますが。
(知らない場合は調べていただけるとたくさん出ます。ほんとに)

固定ページの箇所でエラーが出ていたので、なんなのかなと思ったら。
pdo/db.phpがオーバーライドしてるescapeメソッドが原因でした。

WordPressは最新版…3.4.2でコード見たら、配列に対応してたけれど、
プラグインの方はまさかの return addslashes($data); だけだったので、
こっちの方をコメントアウトすることでどうにか動きました、と。

んー、他に何かあるかなあ…。

for文

CoffeeScriptで普通のfor文

for i in [1..10]
  document.write i

ちなみに whileだと

i = 0
document.write ++i while i < 10

これくらいならどちらでもいいと思うけど。
書きだしたJavaScriptを思うに、forの方がいい時ってあるかな…と思って
手探りした結果がこれでした。