GP通信annex このページをアンテナに追加 RSSフィード Twitter

2008-08-09

IWDD#25参加してきた(ポロリもあるよ?)

大体お昼前くらいから18時くらいまででしたが、IWDD#25ハッカソン祭りに参加してきましたよ。

で、おれは結局何をやったかというと

前にAS3でちょろっと組んでみたお絵描きツールっぽいものがあるのですが、これをWebカメラにレイヤーしたら面白そうじゃね?という感じの単なる思いつき*1で、Webカメラでキャプチャした映像にらくがきをするツールを途中まで組んでみてきました。AS3のリハビリをかねて*2

VAIOに入れてあってまだ使ってなかったFlex3sdkとfcshの超便利なラッパーrascutを入れてコンパイル環境を作り、ソースはテキストエディタで書くという、おれ個人としては慣れない方法でやった。で、やっぱり慣れない方法はしんどかった(でもrascutはちょー便利だった。flex派の人はこれ必須アイテムですね)。

もっと実用的?な機能やUIなんかも実装したかったんだけどそこまでは行けず中途半端に終わってしまった。でも一応恥ずかしながらですがソース晒しておきます。Oekaki.asでソースファイル作ってFlexSDKでコンパイルして、WebカメラつないでOekaki.swfを立ち上げると(動く事は)動きます。

あ、大事な事なのでもっぺん書きますが、テキトーだし機能もなんもない感じ。とほほすぎる。

酷いソース

package {
	import flash.display.*
	import flash.events.*;
	import flash.media.Camera;
	import flash.media.Video;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;

	[SWF(backgroundColor=0xFFFFFF, width=680, height=280)]

	public class Oekaki extends Sprite {
		//描画API
		private var x_prev:uint = stage.mouseX;
		private var y_prev:uint = stage.mouseY;
		private var m_flg:Boolean = false;
		private var canvas:Shape = new Shape();
		private var line_width:uint = 5;
		private var line_color:uint = 0x000000;
		//Webcam
		private var video:Video;
		//ビットマップ
		private var bm:Bitmap;
		private var bmd:BitmapData;
		//ボタン
		private var btn:Sprite;

		//コンストラクタ
		public function Oekaki () {
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
			//Webカメラ
			var camera:Camera = Camera.getCamera();
			if (camera != null) {
        	        	camera.addEventListener(ActivityEvent.ACTIVITY, activityHandler);
                		video = new Video(camera.width*2, camera.height*2);
                		video.attachCamera(camera);
                		stage.addChild(video);
        		}
			//カラーチップ
			/* 線の色選べるようにしたいと思ってたがやってない。線幅とかも変更可能にしたい */
			//ビットマップデータ
			bmd = new BitmapData(camera.width*2, camera.height*2, false, 0xCCCCCC);
			bm = new Bitmap(bmd);
			bm.x = camera.width*2;
			stage.addChild(bm);

			//らくがき
			canvas.graphics.lineStyle (line_width, line_color);
			stage.addChild (canvas);
			stage.addEventListener ( MouseEvent.MOUSE_MOVE, function():void {
				if (m_flg) {
					canvas.graphics.moveTo ( x_prev, y_prev );
					canvas.graphics.lineTo ( stage.mouseX, stage.mouseY );
				}
				x_prev = stage.mouseX;
				y_prev = stage.mouseY;
			});
			stage.addEventListener ( MouseEvent.MOUSE_DOWN,function ():void{m_flg = true;} );
			stage.addEventListener ( MouseEvent.MOUSE_UP,function ():void{m_flg = false;} );

			//撮影ボタン
			btn = new Sprite();
			btn.buttonMode = true;
			btn.graphics.beginFill(0x66ff66);
			btn.graphics.drawRect(0,0,60,20);
			stage.addChild(btn);
			btn.addEventListener(MouseEvent.MOUSE_UP, btnUp);
		}
		//Webカメラ用
		private function activityHandler(e:ActivityEvent):void {
        	    trace("activityHandler: " + e);
        	}
		//ボタン用
		private function btnUp(e:MouseEvent):void {
			bmd.draw(video);
			bm = new Bitmap(bmd);
		}
	}
} 

まじひでー。

で、他の人たちはといいますと

java人工無脳作ってたり、RailsでWebアプリ作ってたり、MSX(!!)でパズルの解析ソフト?作ってたり、NucleusCMSのテンプレート作ってたり、phpで何か作ってたり、JavaScriptcanvasで何か作ってたり、、、そんな感じで見事に超バラバラ。やはり夏休みの自由研究てきな感じでしたね。

最後まで居られなかったので成果発表が見られなくて残念でしたが、各自ブログなり公式サイトに結果発表をしていただきたいです!楽しみにしてます。

全体的な感想

MSXやってた人も言ってたし、おれも前のエントリに書いたが、ある程度テーマがあった方が集まってコーディングとか作業をする意義があると思うんだなあ...と、あらためて思った次第。

でもこういった集まり自体は面白いですね。Morioka.asでもこういう感じでAS書くのとかやってみたい。あとコーヒーうまかったです。

というわけで以上、皆さんおつかれさまでしたー。

*1:たまたま会場にWebカメラ持ち込んでいたので思いついたという

*2:業務ではAS1/2ばかりなので、AS3まじこんがらがった。例えばxmouseとmouseXとか

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証