2011.05.20 | 

おはようございます。ムーチョです。
もうすぐAdobe Creative Suite 5.5が発売だそうで。
何が新しくなるんですかね?重くならないといいんですが。
バージョン毎のファイル互換が悪いアプリは特に重くならないでほしいですね。

さてさて久しぶりにActionScript3ネタですが、オブジェクトがお目当てのプロパティを持ってないと

1119: 未定義である可能性が高いプロパティ prop に静的型 obj の参照を使用してアクセスしています。

というようなエラーが出るので、あるかないか分らない場合はアクセスする前にその有無を
たびたび確認する必要があるのでメモ。



if("prop" in obj) trace(obj.prop);

if(obj.hasOwnProperty("prop")) trace(obj.prop);


こちらで速度比較もしてます。http://nashiko.net/blog/1171
それによるとinの方が速いようです。
ソース的にも短くてわかりやすいですしいいことづくめ。

2011.04.05 | 

ムーチョです。こんにちは。お久しぶりです。
コンストラクター内であれこれ処理しようとすると、Ver.9ではエラーが起きるので
Event.ADDED_TO_STAGEのイベントで初期化的処理をするようにしていたのですが、
時々、Event.ADDED_TO_STAGEの発生タイミングがおかしいなと思ってテストしてみました。
挙動がおかしくなるのは複数のSWFをloadする時なんですが、
読み込んだSWFから、さらに別のファイルをloadしようとすると、
読み込み元をaddChildしていないのに、Event.ADDED_TO_STAGEが発生します。

こんな感じでテストしてみました。

それぞれ別のSWFですが省略するとこんな感じ


class a extends Sprite {
	public function a () {
		var l:Loader = new Loader();
		l.load(new URLRequest("b.swf"));
	}
}

class b extends Sprite {
	public function b () {
		var l:Loader = new Loader();
		l.load(new URLRequest("c.swf"));
		addEventListener(Event.ADDED_TO_STAGE, eventHandler);
	}
	private function eventHandler(e:Event):void {
		trace("call:Event.ADDED_TO_STAGE");
	}
}

class c extends Sprite {

}

//------------------------
call:Event.ADDED_TO_STAGE

この現象はVer.9でも10でも起きるようです。
そしてremoveChildできないので、Event.REMOVE_FROM_STAGEも効きません。

これはバグな気がするんですが、
同じところでハマったという嘆きの声がググってもあまり出てきませんでした。。。
ここでイラッと来る私の作り方がそもそもいけないんですかね?

2011.04.01 | 

やぁ、どうもどうも、目をかきすぎて、
パンダみたいになってるkaminalyです。

今日のはまりポイントは、
Papervision3Dのマウスイベントです。
(※バージョン 2.0 Great Whiteでのお話)
(続きを読む...)

2011.03.08 | 


private function ReplaceURL(str:String):String {
	var p:RegExp = new RegExp("(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)", "gi");
	var r:String = "<a href=\"$1$2\" target=\"_blank\">$1$2</a>";
	return str.replace(p, r);
}

2011.01.21 | 

たまに使うのでメモ。



private function ArrayShuffle(arr:Array){
	var l = arr.length;
	var newArr = arr;
	while(l){
		var m = int(Math.random()*l);
		var n = newArr[--l];
		newArr[l] = newArr[m];
		newArr[m] = n;
	}
	return newArr;
}