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

2007年07月 アーカイブ

2007年07月04日

TurboGearsインストール

PythonのフレームワークTurboGearsのハンズオンを受けることになったので環境設定(Mac)

ここ見ながらやった
1.0/InstallMac - TurboGears Documentation
http://docs.turbogears.org/1.0/InstallMac

とりあえず最新版のpythonをインスール

$ sudo port install python25

portで入れるとpython25で/opt/local/binにはいるので、pythonでシンボリックリンク作成

ez_setup.pyやったらなんかエラー出たので以下のライブラリをインストール

$ sudo port install py25-hashlib
$ sudo port install py25-zlib

http://peak.telecommunity.com/dist/ez_setup.py

$ sudo python ez_setup.py

http://www.turbogears.org/download/tgsetup.py

$ sudo python tgsetup.py

2.4.4が推奨だけど、2.5でもよいかねと出たけどそのままyesで

以下が動いたらおっけ

$ tg-admin info

WCAN mini ActionScript Vol.3

WCAN [ Web Creators Association Nagoya ] WCAN mini ActionScript Vol.3
http://www.wcan.jp/index.php?ID=115

やりますよー
席少ないのでお早めにー

飛び込みの発表とかありありなので、よかったら飛び込んでください。

2007年07月09日

スプーン曲げ

あれでないな?
http://esp.kayac.com/

They’re Beautiful

They're Beautiful!
http://www.theyrebeautiful.com/

バーチャルな花を贈れるサービス。
送られてきた花は育てることができる。
ほおっておくと枯れるのかな
blogパーツもあり

すかうたー

pownce

Pownce : ll_koba_ll .
http://pownce.com/ll_koba_ll/

Diggの創業者が始めたらしいTwitter的なサービス。
まだ招待制みたい。アカウントとれた。

日本語がぁー

2007年07月11日

FlashでMultitouch

andré michelle - gamedev | musicware - berlin is in germany » Blog Archive » Multitouchscreen AS3 controlled
http://blog.andre-michelle.com/2007/multitouchscreen-as3-controlled/

ActionScript3.0で作られてるらしいです。
Screenshot_1.png

こんな仕組みらしい
http://www.timroth.de/180/page5/page5.html


180
http://www.timroth.de/180/

Emacsのブックマーク

C-x r m RET
カーソル位置をブックマークに追加


C-x r m bookmark RET

カーソル位置を bookmark という名前でブックマークに追加


C-x r b bookmark RET

bookmark という名前のブックマークに移動


M-x bookmark-save

デフォルトのブックマークに保存


C-x r l

すべてのブックマークリストを表示
d で削除対象設定
x で実行


C-h m

ブックマークリストの中でやるとhelp


ブックマークとは関係ないけどマークの設定で悩み中
マークの設定が C-spc or C-@ なんだけど、C-spc は QuickSilver に割り当てられてるし、C-@は、なぜかことえりにとられる。

C-@すると日本語入力に切り替わっちゃうんだよな。しかもことえりの設定にはC-@なんてどこにも無い・・・。

C-@使いたいんだけど無理かなー
キーを変更するか。

2007年07月12日

はてなスター

ll_koba_llの日記 - はてなスター
http://d.hatena.ne.jp/ll_koba_ll/20070712/1184216923

2007年07月20日

getURLでjavascriptのwindow.opneするとswfaddressが死ぬ。IEだけ。

as2です。

検証用
http://labs.un-q.net/flash/swfaddress_geturl/#/page3/

IEだけの現象みたい。
page1とかpage2とかをクリックするとページ遷移してURLもちゃんと変わる。
でも途中でgetURLってのをクリックして、開いたウィンドウを消した後、page1とかpage2とかクリックすると、ページ遷移するけどURLが変わらない。
さらにもっかいgetURLクリックすると真っ白に。

でもExternalInterface.call経由でwindow.openしても大丈夫っぽい。
同じ手順でgetURLの変わりにEX.callクリックしても、後の動作は変わらない。

geturl_btn_mc.onRelease = function() {
    // swfaddress死ぬ
    getURL("javascript:window.open('http://un-q.net', '_blank');void(0)");
}
excall_btn_mc.onRelease = function() {
    // swfaddress死なない
    ExternalInterface.call("function() {javascript:window.open('http://un-q.net', '_blank');}");
}

またIEにやられた ><

明日のAS勉強会をライブ中継(画像だけだけど)

明日は名古屋でActionScriptの勉強会です。

Lightning Talksでちょっとしゃべるのですが、そのネタを公開しておく。
http://labs.un-q.net/as3/eventlive/

まだまだ全く途中だけど、とりあえず公開。
WEBカムの画像を定期的にUPして、最新の9枚をただ表示してるだけ。

まだいろいろ実装したい機能があるけど、とりあえず明日はこれで勉強会の様子を画像だけで中継します。(意味あるのか?)

ちなみに画像は1分おきにアップロードしてます。
表示側も1分おきに再描画。

まぁとりあえず実験的に。。。

次のイベントまであれとかあれを。。。

2007年07月23日

ustream.tv

なんか流行らしい
Ustream.tv
http://ustream.tv/

朝から、wcan mini asのレポートも書かず遊んでます。
http://ustream.tv/channel/lllkoballl

なんかこのツールつかってディスクトップの配信もできるみたい
Cam Twist 1.4 - Mac OS X - VersionTracker
http://www.versiontracker.com/dyn/moreinfo/macosx/31806

勉強会これで配信すりゃよかったじゃん。
発表した勉強会中継ツール(できてないけど)は違うアプローチをしないかんな

WCAN mini ActionScript Vol.3

おそくなりますたが、勉強会のレポートとか。

とりあえず今回は「ActionScirpt のおもちゃ箱」ってことでいろいろ盛りだくさんでした。

レポートはいつも通りbigchuが書いてます。いつもありがとう!!
BIGCHU ::: 飲酒webクリエイターのブログ : 酒は血液 飲んだら献血 - : 今回も参加!WCAN mini ActionScript Vol.3、おもちゃ箱!?
http://d.hatena.ne.jp/bigchu/20070721/1185045101

その他のレポートは
はてなブックマーク - タグ wcanminias3
http://b.hatena.ne.jp/t/wcanminias3?sort=eid

[wcanminias3]ってタグでブックマークしてってます。


私は Lightning Talks で参加ってことで、簡単にイベントを中継するシステムのプロトタイプ的なものをお見せしました。
明日のAS勉強会をライブ中継(画像だけだけど) (Unknown Quality)
http://un-q.net/2007/07/actionscript_camera.html

カメラの位置が悪かったり、そもそも画像だけって感じもしてましたが、手軽にWEBカメラだけでってことで。今後はTwitterと連携して勉強会のログを残せる仕組みとして作ってみようかな。

単純に中継するなら
Ustream.tv
http://ustream.tv/
が一番お手軽かも。


個人的に気になったのは、やはりGainer
GAINER.cc | About / WCAN mini ActionScript Vol.3
http://gainer.cc/About/WcanMiniActionScriptVol3

デモを少し見せてもらったけど、Wiiリモコンみたいなやつだった。
残念なのはAS3に対応していないこと><
でも公式のフォーラムのほうでこんなやり取りがあったり
ActionScript3対応パッケージ
http://gainer.cc/forum/index.php?topic=183.msg577#msg577

勝手に対応させちゃおうって人とか、Funnelって新しいプロジェクトも立ち上がってるみたい。
しかもFunnelはRubyからも扱えるらしいよ!

あとは山田さんの話しもよかった。
a-blog with F 【AS勉強会】ASでデザインする試み
http://appleple.heteml.jp/blog/index.php?ID=584


懇親会はbigchuさくーしゃさんが意気投合してたw
でもbigchuは途中までさくーしゃさんのことを、にとよんさんと呼んでたw
大阪組が2次会まできてくれて楽しかったっす。

今回も東京や大阪からみんな来てくれてありがとう!
今度は大阪に遊びに行きます。

次回は Main Talksで地元の人にたくさん発表してほしい。

あと、たけし誕生日おめでとう

WCAN mini ActionScript Vol.3 のやつソース公開

WEBカメラの画像を定期的にサーバーへアップするやつを発表したんだけど、結構仕組みを質問されたからソース公開しておく。

ちなみにこちらを参考にしました。

FICC LABS | Flashから画像ファイルを保存する
http://www.ficc.jp/labs/archives/ando/flash/

ソースはこちらから
http://un-q.net/2007/07/23/files/Camera2JPG.as.zip


以下のライブラリにcom.adobe.images.JPGEncoderってのがあるのでそれを使います
http://as3corelib.googlecode.com/

JPGEncoderはbitmapdataをJPGのByteArrayに変換してくれるので、それをサーバー側に投げてファイルにして保存してるだけです。

重要なのはこの辺かな。


bmd.draw(video); // カメラの内容をdraw
var jpge:JPGEncoder = new JPGEncoder(80);
var byteArr:ByteArray = jpge.encode(bmd);
urlRequest = new URLRequest(phpPath); // 保存用のPHP
urlLoader = new URLLoader();
urlRequest.contentType = "application/octet-stream";
urlRequest.method = URLRequestMethod.POST;
urlRequest.data = byteArr;
urlLoader.load(urlRequest);

ちなみにPHPのソースは


$fileName = time()."-".round(rand(1,10000)).".jpg";
$fp = fopen("img/".$fileName, 'wb');
fwrite($fp, $GLOBALS['HTTP_RAW_POST_DATA']);
fclose($fp);
print $fileName;

だけ

WEBカメラ扱うのは、なかなかおもしろいっすな。

2007年07月24日

FIVe3D

Mathieu Badimon | FIVe3D
http://five3d.mathieu-badimon.com/

平面のオブジェクトを3Dで扱う為のライブラリ

ここの中の人がつくったみたい
LAB | Mathieu Badimon
http://lab.mathieu-badimon.com/

ActionScript2.0なんだけど3.0っぽいクラス名で構成されてる。 five3D.utils.Drawing で描画したオブジェクトを動かす感じで、テキストも半角英数なら3Dで動かせる。どうやらテキストはクラスに座標を定義してあって、lineToとかで描画してるみたい。HelveticaMedium.as とかフォントのクラスがあった。

適当にサンプルつくってみた
http://labs.un-q.net/flash/five3d/test01/

Screenshot_1.png
import five3D.display.DynamicText;
import five3D.display.Scene;
import five3D.display.Sprite;
import five3D.utils.Drawing;

var scene:Scene = new Scene(this);
var root:Sprite = scene.getRoot();

var text:DynamicText = root.createDynamicText("text", 1);
text._typography = five3D.typography.HelveticaBold;
text._size = 40;
text._color = 0xffffff;
text._text = "Unknown Quality";
text._x = 120;
text._y = 50;

text.onEnterFrame = function() {
    this._rotationx += 10;
}

var rect:Sprite = root.createSprite("rect", 0);
Drawing.rectangle(rect,300,100,0xFFFFFF);
rect._x = 120;
rect._y = 200;

rect.onEnterFrame = function () {
    this._rotationx -= 10;
}

回転の中心がうまく決められない。 サンプル見たら、コンテナみたいなのにのせて動かしてたから真似てみた。

http://labs.un-q.net/flash/five3d/test02/

Screenshot_2.png
import five3D.display.DynamicText;
import five3D.display.Scene;
import five3D.display.Sprite;
import five3D.utils.Drawing;

var scene:Scene = new Scene(this);
var root:Sprite = scene.getRoot();

root._x = 280;
root._y = 200;

var container:Sprite = root.createSprite("container", 0);
Drawing.rectanglePlace(container, -180, -150, 360, 300, 0xffffff);

var text:DynamicText = container.createDynamicText("text", 1);
text._typography = five3D.typography.HelveticaBold;
text._size = 40;
text._color = 0x999999;
text._text = "Unknown Quality";

text._y -= 20;
text._x -= 160;
text._z -= 20;


var text2:DynamicText = container.createDynamicText("text2", 0);
text2._typography = five3D.typography.HelveticaBold;
text2._size = 40;
text2._color = 0x000000;
text2._text = "Unknown Quality";

text2._y -= 20;
text2._x -= 160;
text2._z -= 10;


container.onEnterFrame = function() {
    this._rotationy++;
    //this._rotationx++;
    //this._rotationz++;
}
裏側が見えてしまってるのは仕様かな?

FIVe3D 02

マウスにあわせて動かしてみた

http://labs.un-q.net/flash/five3d/03/ Screenshot_3.png

import five3D.display.DynamicText;
import five3D.display.Scene;
import five3D.display.Sprite;
import five3D.utils.Drawing;

var scene:Scene = new Scene(this);
var root:Sprite = scene.getRoot();

root._x = 280;
root._y = 200;

var container:Sprite = root.createSprite("container", 0);
Drawing.rectanglePlace(container, -180, -150, 360, 300, 0x000000);

var text:DynamicText = container.createDynamicText("text", 1);
text._typography = five3D.typography.HelveticaBold;
text._size = 40;
text._color = 0xffffff;
text._text = "Unknown Quality";

text._y -= 20;
text._x -= 160;
text._z -= 20;


var text2:DynamicText = container.createDynamicText("text2", 0);
text2._typography = five3D.typography.HelveticaBold;
text2._size = 40;
text2._color = 0x999999;
text2._text = "Unknown Quality";

text2._y -= 20;
text2._x -= 160;
text2._z -= 10;

container.target = this;
container.onEnterFrame = function() {

    this._rotationy = -(root._xmouse/5);
    this._rotationx = (root._ymouse/4);

}

FIVe3D 03 FuseKitと連携

してみた

http://labs.un-q.net/flash/five3d/04/

import five3D.display.DynamicText;
import five3D.display.Scene;
import five3D.display.Sprite;
import five3D.utils.Drawing;

import com.mosesSupposes.fuse.*;
ZigoEngine.simpleSetup(Shortcuts, PennerEasing);

var scene:Scene = new Scene(this);
var root:Sprite = scene.getRoot();

root._x = 280;
root._y = 200;

var container:Sprite = root.createSprite("container", 0);
Drawing.rectanglePlace(container, -180, -150, 360, 300, 0x000000);

var text:DynamicText = container.createDynamicText("text", 1);
text._typography = five3D.typography.HelveticaBold;
text._size = 40;
text._color = 0xffffff;
text._text = "Unknown Quality";

text._y -= 20;
text._x -= 160;
text._z -= 20;


var text2:DynamicText = container.createDynamicText("text2", 0);
text2._typography = five3D.typography.HelveticaBold;
text2._size = 40;
text2._color = 0x999999;
text2._text = "Unknown Quality";

text2._y -= 20;
text2._x -= 160;
text2._z -= 10;

var square_mc:MovieClip = this.createEmptyMovieClip("btn", this.getNextHighestDepth());
square_mc.beginFill(0xFF0000, 0);
square_mc.moveTo(0, 0);
square_mc.lineTo(Stage.width, 0);
square_mc.lineTo(Stage.width, Stage.height);
square_mc.lineTo(0, Stage.height);
square_mc.lineTo(0, 0);
square_mc.endFill();

square_mc.onPress = function() {
    ZigoEngine.doTween(container, "_rotationy", -(root._xmouse/5), 0.5, Back.easeOut);
    ZigoEngine.doTween(container, "_rotationx", (root._ymouse/4), 0.5, Strong.easeInOut);    
}

2007年07月25日

ROXIKの城戸さん

今日、名古屋でAdobeのイベントがあったんだけど、そこにROXIKの城戸さんがきた!

ROXIK
http://roxik.com/

ROXIK | PICTAPS
http://www.roxik.com/pictaps/

あんなぶっ飛んだコンテンツをつくる人ってことで、すげー楽しみにしてたんだけど、期待を裏切らずスゴクよかった。


まずびっくりしたのがプレゼンの資料。
Flashで作ってあったんだけど、なんかちっちゃい奴らがたくさん出てきて、わーて文字はこんだり、人文字作ったりしてたw
ちっちゃいやつらはペラペラなんだけど3Dでつくられてた。
どうやら、どこかでボツッたやつを、もったいないから今回用にしたらしい。

3DでつくるFlashコンテンツの話しだったんだけど、今仕事でやってるものをイロイロみせてもらった。まだ作成中の物ばかりだったので、どんなだったかは言えないけど、すごい物ばかり!


AS2とAS3の比較とかもあったんだけど、AS3はえーって感じだった。


ものを作るときには、まず思いついたら作ってみる。で、作ってる間にまた思いついて、さらにイロイロやってみる。その繰り返しがとてもいいと言ってた。
よいループに入れると、おもしろいモノがつくれる。どこかでは止めないといけないけどw


3Dで何か作るときは、既存のライブラリとかを使うよりも、自分で一からやった方がいいらしい。そうすることで、3Dの基本的なことが体に染み付いていくとのこと。
これは、なるほどと思った。ライブラリ使ってると、よくわからんけど動いたみたいのがあるから、応用がなんともって感じだったから。

城戸さんも、3Dを始めたとき、一からWEBを見ながら作っていったらしい。
とりあえず簡単なものなら、三角関数がわかってれば大丈夫だと。


自作のライブラリをつかって3Dの表現をしてるらしいんだけど、それもちゃんとした形にして
公開したいとも言ってた。非常に楽しみ。


終わった後で、すこし話しができたんだけど、福岡にあまりクリエイターがいなくて寂しいみたいな話しをしてた。みんな東京だからなーって。
地方がんばろーみたいな感じになったw


いつか名古屋の勉強会にきてくれるといいなー

ActionScript3.0で3Dしてみる 01

城戸さんの話しを聞いて1から3Dをやってみることにした。

とりあえずこれをAS3に移植してみる。

Webデザインとグラフィックの総合情報サイト - MdN Interactive - 第1回 3D表現とは?
http://www.mdn.co.jp/content/view/1093/88/


http://labs.un-q.net/as3/3d/01/
package {

    import flash.display.*;
    import flash.events.*;

    [SWF(width="400",height="300",frameRate="24",backgroundColor="#FFFFFF")]            
    public class Test3D01 extends Sprite {

        private var panel:Sprite;
        private var centerX:Number = stage.width/2; // 中心点のx座標をステージの横中央に
        private var centerY:Number = stage.height/2; // 中心点のy座標をステージの縦中央に
        private var centerZ:Number = 0; // 中心点の座標を設定
        private var fl:int = 300; // 視点からの焦点(screen)までの距離を設定
        private var r:int = 100; // 回転の半径
        private var angle:Number = 0; // 回転角の初期値
        private var px:Number;
        private var py:Number;
        private var pz:Number;
        private var rad:Number;
        private var scale:Number;
        
        function Test3D01() {

            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;

            addEventListener(Event.ENTER_FRAME, loop);

            init();

        }

        private function init():void {
            panel = new Sprite();
            panel.graphics.beginFill(0x000000);
            panel.graphics.drawRect(0,0,50,50);            
            addChild(panel);
        }

        private function loop(e:Event):void {
            
            angle += 5;
            rad = angle / 180 * Math.PI; // 角度をラジアンに変換
            px = Math.cos(rad)*r; // 半径、ラジアンをもとに仮想3D空間のx座標を計算
            py = 0;
            pz = centerZ - Math.sin(rad) * r; // 半径、ラジアンをもとに仮想3D空間のz座標を計算
            scale = fl / (fl+pz); // 透視変換の比率を計算
            panel.x = px * scale + centerX;
            panel.y = py * scale + centerY;
            panel.scaleX = panel.scaleY = scale;
            
            panel.x += 150;
            panel.y += 150;

        }
    }
}

2007年07月26日

いまさらTweener

いまさらだけど、Tweenerを試してみた。


お手軽簡単な感じですな

var s:Sprite = new Sprite();
s.graphics.beginFill(0x000000);
s.graphics.drawRect(-25,-25,50,50);
s.x = 100;
s.y = 200;

addChild(s);

stage.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void {
    Tweener.addTween(s, {x:mouseX,y:mouseY,time:1,transition:"easeOutQuart"});                
});

addEventListenerで無名関数使うと removeEventListenerできない

※できることがわかりました。 詳細は下の方の追記へ

Flashゲームプログラミング講座 For AS3.0【EventDispatcher クラスについて】
http://hakuhin.hp.infoseek.co.jp/main/as3/event.html#EVENT_02

removeEventListenerでは引数にイベントのタイプと、リスナー自体の参照がなので、無名関数使うと、removeEventListenerできない><

EventDispatcher - Adobe® Flex™ 2 リファレンスガイド
http://livedocs.adobe.com/flex/2_jp/langref/flash/events/EventDispatcher.html#removeEventListener()


これだとできない

addEventListener(Event.ENTER_FRAME, function(e:Event):void{trace("hogehoge")});
removeEventListener(Event.ENTER_FRAME, これがない><);


普通にメソッド定義してやってもいいけど、こんなやり方でもできる

var hoge:Function = function(e:Event):void {trace("hogehoge")}
addEventListener(Event.ENTER_FRAME, hoge);
removeEventListener(Event.ENTER_FRAME, hoge);

追記 2007/07/26 20:10
os9さんのコメントでarguments.callee使えばできるみたいです。
これは思いつかんかった><
http://un-q.net/2007/07/addeventlistener_removeeventlistener.html#comment-6219
arguments - Adobe® Flex™ 2 リファレンスガイド
http://livedocs.adobe.com/flex/2_jp/langref/arguments.html

2007年07月27日

3D Ball

3Dのボールっぽいものを描画してみた。
単純に放射線のグラデーションを円に塗っているだけ。
適当にやってたらなんとなくそれっぽくなった。


http://labs.un-q.net/as3/3d/ball/

Screenshot_1.png

var ball:Sprite = new Sprite();
var fillType:String = GradientType.RADIAL;
var colors:Array = [0xFFFFFF, 0x333333];
var alphas:Array = [1, 1];
var ratios:Array = [0x00, 0xFF];
var matr:Matrix = new Matrix();
matr.createGradientBox(-250, -250, Math.PI/2, 100, 80);
var spreadMethod:String = SpreadMethod.PAD;
var interpolation:String = InterpolationMethod.RGB
ball.graphics.beginGradientFill(fillType, colors, alphas, ratios, matr, spreadMethod,interpolation);  
ball.graphics.drawCircle(0,00,100);
addChild(ball);

2007年07月30日

AIRでfcsh

するときは

$ rlwrap fcsh 
(fcsh)mxmlc +configname=air HellorAir.as

amxmlc は mxmlc +configname=air とおなじ

てっく煮ブログ - fcsh で Apollo を高速コンパイル(参考リンク集のおまけ付き)
http://d.hatena.ne.jp/nitoyon/20070526/apollo_fcsh

2007年07月31日

factioに勝ったよ

About 2007年07月

2007年07月にブログ「Unknown Quality」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2007年06月です。

次のアーカイブは2007年08月です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。