2012.05.11 | 

こんばんは。muchoです。
やっぱりコンプガチャとかAKB商法とかいやらしいですよね。
さてさて。今日は小ネタも小ネタ。
これまた以前にやったことあったんですが、今日使おうと思って、
えーとあれはどうするんだっけ?とググったりしたので
備忘録的にメモ




public function Main():void
{
	var l:int = 100;
	var points:Vector.< Point > = new Vector.< Point >(_length);
	for (var i:int = 0; i < l; i++)
		points[i] = new Point(int(Math.random() * 100), int(Math.random() * 100));

	_cells.sort(SortByXY);
	for (i = 0; i < l; i++)
		trace("key : " + i + " : " + _cells[i].x + ", " + _cells[i].y);

	_cells.sort(SortByYX);
	for (i = 0; i < l; i++)
		trace("key : " + i + " : " + _cells[i].x + ", " + _cells[i].y);

	// 無名関数を使うのもよし
	_cells.sort( function(a:*, b:*):int
	{
		if (a.x < b.x) return -1;
		else if (a.x > b.x) return 1;
		else 
		{
			if (a.y < b.y) return -1;
			else if (a.y > b.y) return 1;
			else return 0;
		}
	});
	for (i = 0; i < l; i++)
		trace("key : " + i + " : " + _cells[i].x + ", " + _cells[i].y);
}
		
private function SortByXY(a:*, b:*):int
{
	if (a.x < b.x) return -1;
	else if (a.x > b.x) return 1;
	else 
	{
		if (a.y < b.y) return -1;
		else if (a.y > b.y) return 1;
		else return 0;
	}
}

private function SortByYX(a:*, b:*):int
{
	if (a.y < b.y) return -1;
	else if (a.y > b.y) return 1;
	else 
	{
		if (a.x < b.x) return -1;
		else if (a.x > b.x) return 1;
		else return 0;
	}
}



ActionScript sort 関数 とかで検索しても出てこないのはどういうこと?
と思ったら、「ActionScript sort カスタム関数」 で検索したらAdobeのが見つかりました。
最悪それさえ覚えてればいいかも。

2012.04.27 | 

こんにちは。muchoです。
昨夜は会社で事務所移転の打ち上げをしたんですが、
盛り上がりすぎて近隣の皆様に大変なご迷惑をおかけしました。
申し訳ございませんでした。お詫び申し上げます。

さてさてさてさて。
前に一度書いて、えーとあれはどうするんだっけ?となったのでメモ。
デバッグプレイヤーでエラーがポップアップしないようにする方法です。
もう一つ、書き出しがデバッグモードかリリースモードかの判定もメモ。

不明なエラーイベントを取得するUncaughtErrorEventsクラスを使います。
loaderInfo、LoaderにaddEventListenerで使います。
書き出しのバージョンが10.1以上で使えます。

さらにキモなのがイベント発生時に e.preventDefault(); を入れて
デフォルト時の挙動を抑える方法です。これでエラーのポップアップは
しなくなります。



public function Main():void 
{
	// 書き出しのモード判定
	isDebug = Boolean(new Error().getStackTrace().search(/:[0-9]+]$/m) > -1);

	//予期せぬエラー表示対策
	loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, onUncaughtError);
}

private function onUncaughtError(e:UncaughtErrorEvent):void
{
	e.preventDefault(); //←これがないとポップアップします。

	// デバッグ時にはエラーを把握するためにtraceしてみる
	if (isDebug) {
		trace(e.error.type+":"+	e.error.text);
	}
}



さりげなくハマったのが、書き出しのバージョン。
10.0と10.1の違いって、あれやこれや結構ありますね。。。

2012.03.09 | 

こんばんはmuchoです。

USTREAMをFlash内に読み込もうとして、あれこれやってみたのでメモ。
下記のページを参考にしました。
Flash Client API Documentation (AsDoc)

USTREAM Flash Client APIの使い方
Flash : Ustream Flash Client APIを使ってみる - SWFなカスタムパネルで中継を再生



/*
ちょっと苦しんだのが、再生動画のオリジナルサイズを取得する方法
viewer.channel.streamRect
に格納されるみたいです。

再生開始時のイベントもうまく取れませんでした。
viewer.channel.addEventListener("found", onStart);
viewer.channel.addEventListener("createStream", onStart);
このどちらもviewer.channel.streamRect取得できず、
また表示のタイミングともちょっとズレがあるような?
そこはいい解決法が見つからず悲しい力技になってしまいました。
今後の課題です。
*/




		
		public function main():void 
		{
			getRsl();
			visible = false;
		}

		private function getRsl():void 
		{
			Security.allowDomain("*");
			Security.allowInsecureDomain("*");
			viewerLoader = new Loader();
			viewerLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onRslLoad);

			this.addChild(viewerLoader);

			var applicationDomain:ApplicationDomain = ApplicationDomain.currentDomain;
			var loaderContext:LoaderContext = new LoaderContext();
			var request:URLRequest = new URLRequest("http://www.ustream.tv/flash/viewer.rsl.swf");

			loaderContext.applicationDomain = applicationDomain;
			viewerLoader.load(request, loaderContext);
		}

		private function onRslLoad(e:Event):void
		{
			var logicClass:Class = viewerLoader.contentLoaderInfo.applicationDomain.getDefinition("tv.ustream.viewer.logic.Logic") as Class;
			viewer = new logicClass();
			viewer.volume = 0;
			this.addChild(viewer.display);
			playChannel(id);
		}

		private function playChannel(id:String = null):void 
		{
			var channelId:String = id;
			if(id == null) {
				id = default_channelID;
			}
			viewer.createChannel(id);
			addEventListener(Event.ENTER_FRAME, onStart);
			viewer.playing = true;
		}
		
		private function onStart(e:Event):void
		{
			if (!viewer.channel.streamRect) return;
			e.target.removeEventListener(e.type, arguments.callee);
			var vw:Number = viewer.channel.streamRect.width;
			var vh:Number = viewer.channel.streamRect.height;
			viewer.volume = vol;
			viewer.display.x = 0;
			viewer.display.y = 0;
			viewer.display.width = viewer_width;
			viewer.display.height = viewer_height = viewer_width * (vh / vw);
			visible = true;
		}



2011.10.24 | 

こんばんわ
Devjamのコータローです。

ページリニューアルに伴い、新しいサーバーと
ドメインに移転する案件があり、301リダイレクト処理を
行う必要があり、よくわかってなかったので調べてみた

■ 旧ドメイン全体を新ドメインのトップへ転送する

この場合、旧ドメインのどの、ディレクトリにアクセスしても
すべて新ドメインのトップへ転送されます。

 RedirectMatch 301 .* http://新ドメイン/

■ URLを指定して転送
旧ドメインの各URLから新ドメインのURLへ転送されます。

以下の例の場合
旧ドメイン/01.htmlにアクセスすると新ドメイン/a/01.htmlに
旧ドメイン/02.htmlにアクセスすると新ドメイン/b/01.htmlに
転送されます。すべてのディレクトリについて記述しなければなりませんが
ディレクトリ構造が新旧ドメインで異なる場合はこちらで転送できます。

 Redirect 301 /01.html 新ドメイン/a/01.html
 Redirect 301 /02.html 新ドメイン/b/02.html

■ mod_rewriteを使用した転送
ドメイン以下のパスの転送

以下の例の場合
旧ドメインから新ドメインへ転送されます。
フォルダ名やファイル名を変えていない場合には、
これで全てのページが対応するページへリダイレクトされます。

※サーバがmod_rewriteに対応している必要があります。

 RewriteEngine On
 RewriteCond %{http_host} ^www.旧ドメイン
 RewriteRule ^(.*) http://www.新ドメイン/$1 [R=301,L]

以上
コータローでした。

2011.10.05 | 

こんばんわ
Devjamのコータローです。

Macに乗り換えてから
ショートカットが分からず困るのでメモ

よく使うショートカットキーとWindowsとの対比
(続きを読む...)