« 2009年02月 | メイン | 2009年04月 »

2009年03月 アーカイブ

2009年03月02日

WCAN mini ActionScript Vol.10

やりますぞー

『豆腐(ホワイト)デー!?』

日時:2009年3月14日(土) 13:15〜17:30(13:00 受付開始
場所:栄メンバーズオフィスビル
定員:29名
会費:無料

※2009年3月4日(水) 正午頃にWCANのサイトにて受付を開始いたします。

今回はいつもとは違う人が結構しゃべってくれるので楽しみです。
私もパーティクル的モノを発表しますので準備しないと。

忙しいときこそテンション上げてにか作らないとだめですね。

バナーはkimuchaさんが作ってくれましたー

2009年03月05日

選択しているオブジェクトのインタンス名から宣言を生成するJSFL

var doc = fl.getDocumentDOM();
var n;
var l;
for (var i in doc.selection) {
    l = doc.selection[i];
    n = doc.selection[i].libraryItem.name.split("/");
    //l.name = n[n.length - 1].toLowerCase(); // これはライブラリの名前からインスタンス名つけるやつ
    fl.trace("public var " + l.name + ":Sprite;");
}

output
public var hoge:Sprite;
public var fuga:Sprite;
public var uge:Sprite;
public var moge:Sprite;

型とかも動的に出せるかもね。

2009年03月09日

インスタンス名を上から連番でつけるJSFL

選択しているオブジェクトのy座標順にインスタンス名をつけていく。

var doc = fl.getDocumentDOM();
var a = [];
for (var i in doc.selection) {
    a.push(doc.selection[i]);
}
a.sort(function(a, b) { return a.y - b.y});
for (var i=0; i<a.length; i++)
{
    a[i].name = "hoge_" + (i+1);
}

2009年03月19日

WCAN mini AS vol.10 TweensyのEmitter使ってみたよ

やりましたよー。

今回はホワイトデーだったのでテーマは白でした。

季節外れぎみだけどなんとなくパーティクルにはまってたので、パーティクルで雪を降らせるような発表をしました。

ただ内容的にはTweensyの使い方でしたけどw

実はシンプルなパーティクルエンジンを作ってて、それを完成させて雪を降らせる予定だったんだけど、全然まったく1ミクロンも間に合わなかったので結局Tweensyに入ってたEmitterってクラスを使ってパーティクルやってみました。

直前にWonderflでプレゼンしたら面白いかなと思って、さくっとプレゼンツールをWonderflで適当にでっち上げてプレゼンしました。実装がひどくてエラーが出てたりしますが。。。



資料は全然中身が無いので、当日の話をここに書きます。

まずはTweensyの使い方。
TweensyってのはTweenerみたいなものです。でもTweenerよりも動作が軽めです。まだ新しいライブラリなのですが、私も1件仕事で使ってみました。



まず簡単なトゥイーン
Tweensy.to - 目的地までのトゥイーン
現在位置からxが200のとこまで1秒かけて、Linear.easeInで移動
Tweensy.to(_c, {x:200}, 1, Linear.easeIn);

Tweensy.from - 現在地までのトゥイーン
xが0の所から、現在位置まで1秒かけて、Linear.easeInで移動
Tweensy.from(_c, {x:0}, 1, Linear.easeIn);

TweensyGroup - トゥイーンのグループ化 (パラレル実行的)
_cを1秒かけてxが100のとこまでと、_bを2秒かけてxが200のとこまで移動して、全部終わったらremoveChild
var tg:TweensyGroup = new TweensyGroup();
tg.to(_c, { x:100}, 1);
tg.to(_b, { x:200}, 2);
tg.onComplete = function():void {
    removeChild(_c);
    removeChild(_b);
}

TweensySequence - トゥイーンを順番に実行(シリアル実行的)
_cを1秒かけてxが100のとこまで移動してから、1秒かけてyが100のとこまで移動する。pushの時の後ろ2つの引数は、それぞれ、実行前の待ち時間(delayStart)と、実行後の待ち時間(delayEnd)
var ts:TweensySequence = new TweensySequence();
ts.push(_c, {x:100}, 1, Cubic.easeIn, 0, 0);
ts.push(_c, {y:100}, 1, Cubic.easeIn, 0, 1);

フィルタのトゥイーン
var gf:GlowFilter = new GlowFilter();
gf.color = 0xFFFFFF;
gf.alpha = 1;

var ts:TweensySequence = new TweensySequence();
ts.push(gf, {blurX:20, blurY:20}, 1, null, 0, 0, _c);
ts.push(gf, {strength:0}, 1, null, 0, 0, _c);
ts.start();

フレームのトゥイーン
hogeのタイムラインを1秒かけて60まで進める。
Tweensy.to(hoge, {currentFrame:60}, 1);


Tweensyにはトゥイーンの他に、いろんなエフェクトが使えるクラスがいろいろあります。その中にEmitterというクラスがあります。Emitterとは出すとか放つ的な意味で、特定のクラスを設定に従って放出することができます。よく言うパーティクルってやつの単純な物です。
クラスのコンストラクタはこんな感じ
Emitter(Particle:Class,
            target:Object = null,
            frequency :int = 5, 1フレームにに出る量
            random:Number = 1, 1だと毎フレーム放出 0.5だと1/2の確率で放出
            angle:Number = 0,360, 出す方向の範囲
            distance:String = "20", 距離 カンマ区切りで範囲指定
            speed:* = 1,早さというか目的地までの秒数
            blendMode:* = normal ブレンドモード
)

使い方はEmitterと描画用のLayer作るだけ

var bmpLayer:BitmapLayer = new BitmapLayer();
// フィルタとか
bmpLayer.add(new FilterEffect(new BlurFilter(5,5)));
bmpLayer.add(new ColorEffect(new ColorTransform(1,1,1,0.9)));

// ParticleはSpriteを継承してdrawRectしてるだけのクラス
var emitter:Emitter = new Emitter(Particle, {alpha:0,scaleX:2, scaleY:2}
,10,0.5, "-180, 180", 200, 2, "add");

bmpLayer.draw(emitter.holder);
//bmpLayer.clearOnRender = true; // 毎フレームクリア フィルタのときは外してる
addChild(bmpLayer);

addEventListener(Event.ENTER_FRAME, function(e:Event):void {
    emitter.x = mouseX;
    emitter.y = mouseY;
});

このコンテンツには最新のFlashPlayerが必要です


雪はこんな感じ。適当でごめんなさい><
このコンテンツには最新のFlashPlayerが必要です
package
{

    import flash.display.*;
    import flash.events.*;
    import flash.geom.*;
    import flash.filters.*;
    import com.flashdynamix.motion.*;
    import com.flashdynamix.motion.effects.core.*;
    import com.flashdynamix.motion.extras.Emitter;
    import com.flashdynamix.motion.layers.BitmapLayer;
    import com.flashdynamix.utils.SWFProfiler;
    import fl.motion.easing.*;

    [SWF(backgroundColor="#000000", frameRage="30")]
    public class TweensyTest2 extends Sprite
    {

        
        public function TweensyTest2()
        {
            addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event):void
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);

            SWFProfiler.init(this);

            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;
            stage.quality = StageQuality.LOW;
            
            var bmpLayer:BitmapLayer = new BitmapLayer();

            var emitter:Emitter = new Emitter(Particle, {scaleX:1, scaleY:1}
                                              ,1,0.5, "90", 1000, 30, "normal");

            bmpLayer.draw(emitter.holder);
            bmpLayer.clearOnRender = true; // 毎フレームクリア
            addChild(bmpLayer);

            var f:Boolean = false;

            addEventListener(Event.ENTER_FRAME, function(e:Event):void {
                emitter.speed =  rangeRandom(10, 25);
                emitter.x = rangeRandom(0, bmpLayer.width);
            });
        }
        public function rangeRandom(max:Number, min:Number):Number {
            return Math.floor(Math.random()*(max-min+1))+min;
        }
        
    }
}


import flash.display.*;

class Particle extends Sprite
{

    public function Particle()
    {
        var g:Graphics = graphics;
        //beginFill(0x0077FF);
        g.beginGradientFill(GradientType.RADIAL,
                          [0xFFFFFF, 0xFFFFFF],
                          [1,0],
                          [0x00, 0x09]
        );
        g.drawCircle(0,0,10);
        g.endFill();

    }
}


Emitterは簡単に使えてよいのだけど、Tweensy自体はパーティクルの為のライブラリではないので、やっぱりちゃんと自分のライブラリを完成させてみよう。
ライブラリの名前は何がいいかな。

株式会社リンクシンクがFlashでゲーム作れる人募集中

logo.gif

お仕事でいろいろお世話になってる株式会社リンクシンクで、Flashでゲームが作れる方を募集してます。


最近だとウェブカレが好調なリンクシンクですが、今後は一層Flashのゲームコンテンツに力を入れていきたいということで、Flashのゲーム開発者を探しています。


リンクシンクの皆さんはおもしろいコンテンツを作るの大得意ですし、いいアイディアがあればどしどし採用してくれるということなので、未発表のネタをいっぱいもってるアイデアマンは才能を活かせると思います。


やる気のある人、我こそはという腕に覚えのあるFlasherさん、Flashゲーム業界を盛り上げたい志の高いFlasherさんはぜひ応募してみてください。
できる方なら結構いいお給料をもらえるっぽいです。


詳細はこんな感じです。

・仕事の内容:Flashでのコンテンツ開発(主にゲーム)
・学歴:不問
・経験:実務経験3年以上
・年収:実力、実績による。応相談
・職務経歴書、履歴書、作品を持って面接を行います
・以下のいずれかに秀でている人を歓迎します
 ・ActionScript(2または3)の知識
 ・デザイン
 ・Flashアニメーション

応募方法:件名に「Flashエンジニア応募」と書き、本文に簡単な自己紹介、連絡先を記入し、recruit@linkthink.co.jpまでメールしてください。

2009年03月31日

ローハイド.のサイトリニューアル手伝ってくれる方募集

このサイトをデザイナーの方がどれだけ見てるか分からないけど、一応告知。

FIGHT! THE RAWHIDE★ » ローハイド.のサイトリニューアル手伝ってくれる方募集
http://blog.raw-hide.jp/wp/?p=907

気になる人はとりあえず連絡くださいな。

About 2009年03月

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

前のアーカイブは2009年02月です。

次のアーカイブは2009年04月です。

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