しろログ

に関する記事

ActionScript 3.0 アニメーション

2008/03/22

某所で公開して好評だった、デモ。※音アリ音量注意

もともと、FLASHで、サウンドスペクトラム使って、ゲーム作ろうと思ってたのだが、
見つけた音楽がいい音楽だったので、そのままスクリーンセーバー的なデモに落ちついてしまった。

まあ、これはとりあえず置いといて……

ちょっと勉強してみようと思って買った。高かった。

ちょっと読んだ感じだと、
・タイムライン等使わず、コードだけで作成
・三角関数の意義等、実例で分かりやすく
・短いが、完全なソースコード
などがポイント高い。

CS3はもちろん、フリーの環境でもできるように配慮されているようだ。
序盤に超基本的なことも書いてくれてるのが嬉しい。

CS3で最初に実行されるクラスの指定方法とか……
(最初のシーンのプロパティにある「ドキュメントクラス」にクラス名を書けばOK)

OOPが一通りできて、コード中心でバリバリ書きたい方にオススメ。

ご意見・感想・ご質問 (0)

トラックバック URI :

カテゴリ:, 技術

タグ:, ,

そろそろ3Dでもやるか

2007/05/25

使ったのはPapervision3D

以前、DirectXで少しやったけど、やめてた。
でもFlashで飾り程度に使えるとまあ、いいかもってことで、少しやってみた。
基本的にサンプルのHelloWorldをいじってみる。

ちなみにfcwrapとかでやってる人は、
srcの中のcomとorgフォルダをflex_sdk_2のframeworks/source
の中に置けばOK。

とりあえず、どべっとソース。
[Embed]してるのはテクスチャ。

package
{
    import flash.display.*;
    import flash.events.*;

    import org.papervision3d.scenes.*;
    import org.papervision3d.cameras.*;
    import org.papervision3d.objects.*;
    import org.papervision3d.materials.*;

    public class main extends Sprite
    {
        private var container :Sprite;
        private var scene     :Scene3D;
        private var camera    :Camera3D;
        private var sphere    :Sphere;
        private var cylinder  :Cylinder;
        private var plane     :DisplayObject3D;

        [Embed(source='wood.jpg')] private var TexWood:Class;

        public function main()
        {
            init3D();
            addEventListener( Event.ENTER_FRAME, loop3D );
        }

        private function init3D():void
        {
            container = new Sprite();
            addChild( container );
            container.x = 200;
            container.y = 200;

            scene = new Scene3D( container );

            camera = new Camera3D();
            camera.sort = false;

            addSphere();
            addCylinder();
            addPlane();
        }

        private function addSphere():void
        {
            var tx:BitmapMaterial =
            new BitmapMaterial((new TexWood).bitmapData);

            sphere = new Sphere(null, 400);
            sphere.z = 0;
            sphere.rotationX = 30;
            scene.addChild( sphere );
        }

        private function addCylinder():void
        {
            var tx:BitmapMaterial =
            new BitmapMaterial((new TexWood).bitmapData);

            cylinder = new Cylinder(tx, 800);
            cylinder.z = 0;
            scene.addChild( cylinder );
        }

        private function addPlane():void
        {
            plane = new Plane(null, 3200, 2400);
            plane.z = 0;
            scene.addChild( plane );
        }

        private var i:uint = 0;
        private function loop3D(event:Event):void
        {
            camera.hover(0, Math.cos(i * Math.PI/180),
                            Math.sin(i * Math.PI/180));
            sphere.yaw( 10* Math.sin(i * Math.PI/180) );
            i+=4;
            scene.renderCamera( camera );
        }
    }
}

その結果がこれ。


ソース追ってけば、大体分かってしまうほど、お手軽。
3Dシーンと、カメラを用意して、3Dシーンにプリミティブ作ってaddChildし、
ENTER_FRAMEごとにloopでrenderさせるだけ。

でも、オブジェクトが同じ位置にある時の描画が変・・
camera.sort = false
にしておくと、置いた順でZ位置を決定するっぽいので、
チラついたりしないようだけど。

うーん、3Dやるには、
三次元脳にしないといけないから疲れるな~。

ご意見・感想・ご質問 (1)

トラックバック URI :

カテゴリ:コンピューター

タグ:, ,

ActionScript 3.0 勉強中…

2007/04/14

※FLASH Player 9 が必要です。

とにかくActionScript3.0はやっておかないとまずい。
AS2ではとりあえずOOPがスマートにできるんだろう、
くらいにしか考えてなくて普通にスルーしてたけど、
AS3は次元が違う。

バイナリいじれたりする時点で全然違う。
事実上、PCMだろうが、ZIPだろうが何でも扱える。

#実際、もうある・・
how to make actionscript 3 play generated pcm wave data
FZip is an Actionscript 3 class library

ビットマップとかもピクセル単位で操作できる。
それでいて、処理が超速い。

ちなみに上のデモは1辺4ピクセルのチップを625個、毎秒24フレームで動かしてる。

まあ、文法とか型宣言とか、ほとんどJava並なんですけどね・・
Javaアプレット・・時の運とかあるんだろうな・・

とりあえず、AS3開発には、この辺が必須かと。
fcwrap を使ったAS3オールドタイプ開発
fcwrapをWindowsで動かすメモ

ご意見・感想・ご質問 (0)

トラックバック URI :

カテゴリ:コンピューター

タグ:,