2011.05.27 | 

ども、kaminalyです。

こたろんのエントリ「紹介してみた」で
いきなりぶん投げられたネタに答えてみました。

Cinderだとweb上で見れないので、wonderflでつくったよ。
でも、振り子作ったものの、綺麗にずれる周期にうまく合わせられなかったよ(汗
誰かきれいに揺れるパラメータ見つけてくれい!

綺麗に揺れるの作れなかった代わりに、
普通の振り子では振れない角度まで振れるようにしたったぜ(言い訳)

振り子 Pendulum - wonderfl build flash online

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.03.22 | 

どうもどうも、やや、どうも。
まだまだ花粉症と闘う男kaminalyです。

flashでコンテンツ作っていて、
バグに気がつかないまま公開なんてことありますよね。

で、よくあるのがテキストフィールド上でマウスホイールをクリクリすると、
文章が1行ズレてあなたの知らない世界にいってしまうあれです。
パっと見は問題ないだけに、気がつかないんだぜ!

対処方法は2つあって、どちらも簡単です。
1、テキストフィールドの高さを少し多めにとってあげる。
2、テキストフィールドのプロパティ「mouseWheelEnabled」を falseに。

FlashIDEで対処するなら1で、
スクリプトであれば両方使えますが、2がお手軽ですね。

ではまた。
忘れた頃にどうぞ。

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);
}