2010 年 6月 のアーカイブ

Safari 5.0 で画面が溶ける

2010 年 6月 22 日 火曜日 kosuke

Safari 5.0 にしたら全面Flashのリサイズ時にオブジェクトが伸びるようになった。革新的過ぎる。他のサイトでも起きてるし、FireFoxでは今迄どおり動いているし。仕様か?バグか?新手の嫌がらせか?!

Safari バージョン 5.0 (6533.16)


forループ

2010 年 6月 14 日 月曜日 kosuke

小ネタが続きます。
forステートメントは、指定回数のループに用いることが通常ですが、構文的には、

for( 初期値; 終了する条件; 次の値 )

です。なので例えば以下みたいに使うことも出来る。

var master:Vector.<String>	= Vector.<String>([
	"0",
	"1",
	"2",
	"1",
	"21",
	"2",
	"2"
]);
var record:Vector.<String> = Vector.<String>([]);
 
function getValue( str:String ):String{
	var value:String;
	for each( var target:String in record ){
		if( target == str ){
			value = target;
			break;
		}
	}
	return value;
}
 
 
for( var i:uint=0; i<master.length; i++ ){
	var n:String	= master[i];
	for( n; getValue(n); n+="+" );
	record.push( n );
}
 
 
trace( "master:" + master );
trace( "record:" + record );

上記のソースでは、ある文字列の配列をループして、同じ名前があったら、文字列の最後に「+」を付与しています。

for文のポイントはここ。

for( n; getValue(n); n+="+" );

初期値nには、配列から取得した文字列になります。
終了条件は、getValueで得ます。getValueはnの文字列が既に登録されていたらその文字列を、そうでなければ空を返す。
次の値はnの最後に「+」を付与したもの。

このループを通過後、nにはまだ登録されていない文字列が入っています。
結果は以下になります。

master:0,1,2,1,21,2,2
record:0,1,2,1+,21,2+,2++

これをどんな時に使うかというと、たとえばユーザが変更できるxmlから値を取得して使う時、その値は同じものがあってはならない場合なんかに有効。xmlで外部編集を可能にした場合、意図しない値をユーザが入力してしまう可能性があります。転ばぬ先の杖的にこういった構文を入れておくとよいかもしれないです。

Shadowbox.js カウンタの表記

2010 年 6月 11 日 金曜日 kosuke

このブログでも使っている、Shadowbox.jsというLightBox系Ajaxライブラリについて。
Shadowboxでは、グループ化した時、カウンタが表示されます。このカウンタは「 1 of 10 」のような表記。だけどあまり、この「 of 」って表記をデザインで使うことなくないですか?
大体、1 / 10 みたいな。スラッシュを使うんじゃないかと。こっちの方がスマートに見えるし。

そこで、このofを変えたいと思ったのですが、この表記は公式サイトにあるAPIやOptionには記載が無かった。しょうがないので、中身をみてみたらありました。 S.langってオブジェクトの中です。

S.lang = 
{
	 code : "en", of : "of", loading : "loading", cancel : "Cancel", next : "Next", previous : "Previous", 
	 play : "Play", pause : "Pause", close : "Close", errors : 
	 {
	     single : 'You must install the <a href="{0}">{1}</a> browser plugin to view this content.', 
	     shared : 'You must install both the <a href="{0}">{1}</a> and <a href="{2}">{3}</a> browser plugins to view this content.', 
	     either : 'You must install either the <a href="{0}">{1}</a> or the <a href="{2}">{3}</a> browser plugin to view this content.'
	 }
};

このオブジェクトのofの値が表示されてるっぽい。SはShadowboxのショートカットなので、

Shadowbox.lang.of = "/";

のようにして、表記を変更できます。