Flashの最近のブログ記事

Spark project 勉強会 #10に行って来た。

行くタイミングを逃しがちで、去年から行ってなかったけども、
仕事ほったらかして行って来た。

1.  Adobe、西村さんから
Flash Builder 4 / Flash Catalystの紹介
詳しくはこっちでとのこと→Flash Platform デザイナー/デベロッパー向けセミナー

Flash Builder 4ねー
ぶっちゃけ、エディタとしての機能はFlashDevelopにかなわないよなぁ・・・
学生ライセンスで無料だったFlex Builderからのバージョンアップは
あまり意味無さそうだけど、Adobe信者だから考えるw

2. alchemyの話とか、骨展@21_21の話とか 緒方さん
alchemyは意外といがいと良い?!
AS3<->alchemyの連携を減らして、そのやり取りをByteArrayでやると良いらしい。
骨展の話、前回の on the fly で感動した経緯もあり、
興味深かった。
個人的に緒方さんファンw

3. RTMP仕様公開について arkwさん
今回の仕様公開でいろいろ出来そうな予感。
前にRed5で使ってみたRTMPだけど、結局プレーンのテキスト形式のやり取りの方が
サーバとの通信が早いような・・でも実装の手間はかなり減るのでRTMP良いと思う。

4. Spark近況報告 新藤さん
顔認識のライブラリ、外人さんからの投稿なのね。
国際化してきてるー

5. Adobe AIR O/R Mapper AirDao Seacolorさん
AIRでDB使ってなんか作る時、参考にしてみます!

6. Union Platform 紹介 Kenoさん
なんと制作者のColinさんとSkypeが!!
なんだ日本語ぺらぺらやん、Colin氏
あの人日本語わからないふりして絶対ごまかそうとしてるねw(嘘
「マジで?」って言ってたのの受けたよw
で、Union Platformの方、今サーバ公開してくれてるので試せるよ
同時接続1~3万人可能?!マジか!!
AS3で簡単にチャットとか、ほんの8分くらいで作れちゃうんだって。
フリーライセンスで同時接続100人まででベータリリースの予定らしい。
Union Server (Java)
Union Client SDKs, such as Reactor (AS3,.swc)
UPC Protocol


久しぶりに行ってよかったっす。
緒方さんとお話したかったのですが、ご都合により実現せず・・
OOPの方にも出られるそうなので、、ちょっと悩む。

昨日の続き。

なんか自分で解決できなかったので
今Progressionで作ってるもの全部ネイティブの書き換えた。
でもSceneは便利だから使ってる。


と、思ったら解決してくださった方が!

ふむ、よくわからんのは、
ParallelModeはデフォルトでfalseななず。
なのになぜ!?
そして自分のローカルでやってみたら、


cast.parallelMode = false; で

[Fault] exception, information=TypeError: Error #1034: 強制型変換に失敗しました。jp.progression.commands::SerialList@2845b51 を jp.progression.commands.ParallelList に変換できません。
Fault, CommandExecutor.as:133


と怒られてダメなんですけども...


[ 家 ] えぇぇぇぇぇ.... ( ←サザエさんのエンディング )


って感じなので、寝ます。

Progression Framework 最高!
と思い、ずっとProgression信者だった僕です。

が、
CastやCommandのメモリの解放がされていないのか!? という事態に陥り、
2,3日SWFProfilerを眺めつつ調査してたのですが、
どうも一向に良くならないの。

うーん。わからん。
たぶん僕の書き方の問題の確立85%↑くらいはありそうだけど。

あまり深くまで調査できてないけど、とりあえずメモ。

・CastSprite系を、new AddChild→new RemoveChild→null を繰り返すと、メモリにどんどん蓄積されていく。
・Command系も同様
・LoadChildはunloadしてるのかな・・メモリ下がらない。。

とりあえずwonderflでquestion



DeskTopLive.as

| コメント(0) | トラックバック(0)
DeskTopLive.asに参加してきた。

ついさっきまで、六本木スーパーデラックスでDesktopLive.asにいた。
いやーマジでやばかったよね。
Flashのイベントで、なかなかマニアックな内容でしたが、
すごく勉強になったし、楽しかった!

ライブコーディング対決で、
新藤愛大さん (BeInteractive!) / 深津貴之さん (fladdict) / 吉川佳一さん (BOW) 
の三名のかたのASコーディングを深津さんの真後ろあたりで見ていたのですが、
一番驚いたのは三名のコーディングスピードw
アイディアを形にするスピードはもちろん、
"たっちたいぴんぐ" すらできない僕にはもうついていけない早さで
作品が出来上がっていく過程はすごいとしか言いようがなかったです。

自分がいかにZAKOで底辺か思い知らされました。


イベント前半、Flash+ディバイスのお話があり(ほとんどFlashは使っていなかったですがw)
4nchor5の方がご紹介してくださったこちら↓




電気信号で表情を操る という無茶ww
かなり受けましたw

ま、紹介していただいたのは、これだけではないのですが、
この実験的アイディアを生み出す力、形にしていく過程にすごく興味を持ちました。


いや、もう自分がいかにいかに無能か、、、

Clifford Attractor

| コメント(0) | トラックバック(0)
巷のFlasherさんの間ではやりの(?) wonderfl
ポートフォリオにいいですね。
ほかの方のソースも見れるし、フォローして改造したり楽しげです。

さっそく投稿してみました。
PC内にあったとりあえず動くasですが、、

またCS4といい、これでまたflashの進化が加速しそうです。


package {
  import flash.display.DisplayObjectContainer;
  import flash.display.Sprite;
  import flash.geom.Point;
  
  public class Polygon extends Sprite{
    private var pointArr:Array;
    private var _numPoint:uint;
    private var _r:Number;
    
    /**
     * 多角形の頂点のポイントを算出する。
     * 
     * @param  numPoint  : uint    頂点数
     * @param  r    : Number  多角形図形の半径
     */
    public function Polygon(numPoint:uint, r:Number) {
      _numPoint = numPoint;
      _r = r
      
      var theta:Number = (360 / _numPoint)*(Math.PI/180);
      pointArr = new Array();
      for (var i:uint = 0; i < _numPoint; i++) {
        var pt:Point = Point.polar(_r, theta * i);
        pointArr.push(pt);  
      }
      this.rotation -= 90;
    }
    
    /**
     * 各頂点を描画
     * 
     * @param  type    : String  "circle" or "rect"
     * @param  size    : Number  点の大きさ
     * @param  color    : uint    点の色
     * @param  alpha    : Number  点のの不透明度
     */
    public function setPoitsGrahics(type:String = "circle", size:Number = 3, color:uint = 0x0099ff, alpha:Number = 1):void {
      graphics.endFill();
      graphics.lineStyle();
      graphics.beginFill(color, alpha);
      for (var i:uint = 0; i < _numPoint; i++) {
        switch(type) {
          case "circle"  :
            graphics.drawCircle(pointArr[i].x, pointArr[i].y, size);
            break;
          case "rect"    :
            graphics.drawCircle(pointArr[i].x -size/2, pointArr[i].y -size / 2, size);
            break;
        }
      }
      graphics.endFill();
    }
    
    /**
     * 原点から各頂点への直線を描画
     * 
     * @param  size    : Number  線幅
     * @param  color    : uint    線色
     * @param  alpha    : Number  線の不透明度
     */
    public function setP20LineGrahics(size:Number = 1, color:uint = 0x0099ff, alpha:Number = 1):void {
      graphics.endFill();
      graphics.lineStyle(size, color, alpha);
      for (var i:uint = 0; i < _numPoint; i++) {
        graphics.moveTo(0, 0);
        graphics.lineTo(pointArr[i].x, pointArr[i].y);
      }
      graphics.lineStyle();
    }
    /**
     * 各頂点間の直線を描画
     * 
     * @param  size    : Number  線幅
     * @param  color    : uint    線色
     * @param  alpha    : Number  線の不透明度
     */
    public function setP2PLineGrahics(size:Number = 1, color:uint = 0x0099ff, alpha:Number = 1):void {
      graphics.endFill();
      graphics.lineStyle(size, color, alpha);
      graphics.moveTo(pointArr[0].x, pointArr[0].y);
      for (var i:uint = 1; i < _numPoint; i++) {
        graphics.lineTo(pointArr[i].x, pointArr[i].y);
      }
      graphics.lineTo(pointArr[0].x, pointArr[0].y);
      graphics.lineStyle();
    }
    
    /**
     * レーダーチャートの目盛りを描画
     * 
     * @param  partition  : uint    分割数
     * @param  size    : Number  線幅
     * @param  color    : uint    線色
     * @param  alpha    : Number  線の不透明度
     */
    public function setScaler(partition:uint,size:Number = 1,color:uint = 0x0099ff, alpha:Number = 0.5):void {
      var dp:Number = _r / partition;
      var dpdef:Number = dp;
      
      graphics.endFill();
      graphics.lineStyle(size, color, alpha);
      
      while (dp < _r) {
        var ptArr:Array = new Array();
        for (var i:uint = 0; i < _numPoint; i++) {
          var pt:Point = pointArr[i];
          pt.normalize(dp);
          ptArr.push(pt);  
        }
        
        graphics.moveTo(ptArr[0].x, ptArr[0].y);
        for (i= 1; i < _numPoint; i++) {
          graphics.lineTo(ptArr[i].x, ptArr[i].y);
        }
        graphics.lineTo(ptArr[0].x, ptArr[0].y);
        
        dp += dpdef;
      }
      
      graphics.lineStyle();
    }

  }

}
Spark project 勉強会 #5 に参加させて頂いた。
Adobeに行くのが初めてで、それだけでかなりテンションが上がっていたのだが(内緒
終了後、Adobeの2009年カレンダーを頂き、かなりテンションが(ry



今回はFlash Player 10で出来るようになったことの発表をお聞かせいただいた。
さらっと感想と覚書を。


on the fly
on the fly @ minimum interface
やばすぎ。テンションが上がりました。
仕組みからいろいろと説明をしていただいて、
懇親会の方でも詳しくお話を聞かせていただきました。
ちなみにFP10の機能は使われていないとのことw


PixelBender
Adobeから提供される高速画像処理を行う技術 → Pixel Bender
CS4からPhotoshop, Aftereffectで使用される。
FP10ではまだ何かと制限がある様子。
専用言語で処理を記述して、パッケージ化する。
参考サイト book mark
http://moeten.info/flex/20081001_pixelBenderLanguage/PixelBenderLanguage10.htm


Dynamic Sound Generation
AS3でサウンドデータをごにょごにょしたり、生成したりする。
seagirlさんのAmbient Generatorがすごくいい雰囲気で感動!
マウスの動きから音作れないかとか考えたアイディアが前にあったのだけど、
Ambient Generatorの様にいい感じにできるなら作ってみる価値あり!と思った。
mmlemon:hi-farmさんの発表されていたエフェクト系は、ベーシックな思考から
プログラミングされていて、自分も考えて書いてみなきゃとすごくモチベーションアップになった。
考えながらは時間がすごくかかるけど、これが一番大切なんだろうな。


GraphicsPath
シンタックスがキモいdrowpath()だが、ベーシックなので押さえておく必要があるのかな。
Vector.<int>型とか、パスを書く際のMoveTo, LineToの概念は頭に入れておくべきだろうな。
SVGのシンタックスでGraphicsPathが書ける、Flex4のソースにあるPath.asも一回見ておかないとね。



今回2回目の参加で、懇親会は初めてだったのだけど、
とにかく、みなさんすごすぎです。勉強しないとー! という結果です。

がんばろっ!

あ、あと、名刺、つくろっw
子要素の削除

while (numChildren > 0) { removeChildAt(0); }