« 2007年04月 | メイン | 2007年06月 »

2007年05月30日

2点の座標間の距離を計測する

たとえばspAというインスタンスとspBというインスタンス、この2つのインスタンスの距離を測るには三平方の定理を使うとさくっと計測できる。
こんな感じ。
var disX:Number = spA.x - spB.x;
var disY:Number = spA.y - spB.y;
var distance:Number = Math.sqrt((disX * disX) + (disY * disY));
これで不都合はなかったし気にしたこともなかったけど、リファレンスを見てたらこんな方法でも2点間の距離を計測できることが判明。
var pt1:Point = new Point(spA.x, spA.y);
var pt2:Point = new Point(spB.x, spB.y);
var distance:Number = Point.distance(pt1, pt2);
へー、distanceって文言も入ってるし、AS3になって分かり易くなったなーと思ってたら、どうもFlash8の頃にすでに追加されてた関数らしい。orz
返ってくる値は寸分違いがなかったし慣れてるほう使えばいいけど、なんか知らなくて損してる事多そうだなぁ、、、。

2007年05月21日

[Apollo] オンラインアップデートを利用する

07/06/15
apolloからairに名称・仕様変更したときにupdaterの関数もかわった模様。
現在は以下のままだと引数不足で利用できません。
Photopを作るときに便利だと感じたのがオンラインアップデート。
基本的に、ローカルにあるairファイルをupdate.update()で指定しアップデートする機能だが、これにバージョンチェック、airのダウンロード機能をつけると、オンラインアップデートとして使うことができる。
なにが便利かというと、非常に個人的な使い方だが、フリーウェアは一度インストールしたら最新バージョンとかチェックしない。 ので、勝手に調べてボタンを押すだけでさくっとアップデートしてくれると非常に手間がなく、楽なのだ。
しかも、このApolloのアップデートは動作も非常に軽快。
これはもう、Apolloでアプリを作るならつけておいて損はない機能。
以下のソースはApolloに同梱してあるテキストからバージョンを調べて、もしネットワークにある最新バージョンよりバージョンが低ければテンポラリファイルを作成、強制的にアップデートする。
実際に組み込むならアップデートする前に確認ダイアログを出したほうがユーザに優しい仕様になります。

package com.growegg.utils.version{
	
	import flash.net.URLRequest;
	import flash.net.URLLoader;
	import flash.net.URLStream;
	import flash.utils.ByteArray;
	import flash.filesystem.File;
	import flash.filesystem.FileStream;
	import flash.filesystem.FileMode;
	import flash.events.Event;
	import flash.system.Updater;
	
	
	public class Version{
		private var myLoader:URLLoader;
		private var urlStream:URLStream;
		private var fileData:ByteArray;
		
		private var localVer:Number;
		private var networkVer:Number;
		
		private var localURL:String;
		private var networkURL:String;
		private var airURL:String;
		
		
		// _localURL = Apolloに同梱するテキストへのパス
		// ここにバージョンを記載(ex 0.7);
		// 
		// _networkURL = ここにはサーバに置いた
		//  最新バージョンが記載されたテキストへのパス(ex 0.8とか記載)
		// 
		// _airUR = サーバに置いた最新airファイルへのパス

		public function Version(_localURL:String, _networkURL:String, _airURL:String){
			localURL = _localURL;
			networkURL = _networkURL;
			airURL = _airURL;
			
			myLoader = new URLLoader();
			myLoader.addEventListener(Event.COMPLETE, localCompleteHandler);
			myLoader.load(new URLRequest(localURL));
		}
		
		private function localCompleteHandler(event:Event):void{
			trace("local version : " + myLoader.data);
			localVer = myLoader.data;
			checkNetwork();
		}
		
		private function checkNetwork():void{
			myLoader = new URLLoader();
			myLoader.addEventListener(Event.COMPLETE, networkCompleteHandler);
			myLoader.load(new URLRequest(networkURL));
		}
		
		private function networkCompleteHandler(event:Event):void{
			trace("network version : " + myLoader.data);
			networkVer = myLoader.data;
			
			if(localVer < networkVer) update();
		}
		
		
		public function update():void{
			urlStream = new URLStream();
			fileData = new ByteArray();
			urlStream.addEventListener(Event.COMPLETE, airLoadComplete);
			urlStream.load(new URLRequest(airURL));
		}
		
		private function airLoadComplete(event:Event):void{
			urlStream.readBytes(fileData, 0, urlStream.bytesAvailable);
			writeAirFile();
		}
		
		var file:File;
		private function writeAirFile():void{
			file = File.createTempFile();
			var fileStream:FileStream = new FileStream();
			fileStream.addEventListener(Event.CLOSE, fileCloseHandler);
			fileStream.openAsync(file, FileMode.WRITE);
			fileStream.writeBytes(fileData, 0, fileData.length);
			fileStream.close();
		}
		
		private function fileCloseHandler(event:Event):void{
			var updater:Updater = new Updater();
			updater.update(file);
		}
	}
}

2007年05月18日

Photop公開しました

photop
Flex2.0とApollo alphaで制作。
写真は Flickr Services から引っ張ってきてます。
みんなのデスクトップに写真が溢れかえればいい。
Photop
Apolloで制作したので現行のAIRだと動作しなくなりました。

2007年05月12日

Built with Processing @ SuperDeluxe

070511.jpg
元同僚の人たちとBuilt with Processingというイベントに参加してきました。
ものすっごい刺激を受けちゃった。 思わず今日からProcessingやろうかなくらいの勢い。
Flashはすごく面白いし、これからも勉強していくけど、そろそろそれ以外の軸が必要かなーと痛感していただけに、余計良く見えたのかもしれない。
それにしてもスケッチって大切だな。
段階を踏んで表現を濃くしていくことって、すごく素敵なことだと思った。
これをすでに当たり前のこととしてやってる人たちがいるんだなと考えると、まだまだ努力が足りないなと痛感しちゃうわけですよ。

2007年05月06日

ゴールデンウィーク

仕事したり雑誌の記事書いたりしてたらゴールデンウィークが終わってしまった。
けど作業はまだ終わってない。

こんなことじゃいけない! もっと色々やらなくちゃ!!と思ってクックパッドってサイトを見てドレッシングを作ってみた。これが意外とおいしい。
あんまりおいしいから写真とってのせてやろうかと思ったけど、悲しい思い出になりそうだから控えておいた。

2007年のゴールデンウィークの思い出は「ドレッシングを始めてつくりました」というもの。