gainerサンプルプログラム

AS勉強するぞー、と気合を入れていたのだけれど、なんか一気にやる気をそがれてしまったので、昨日はgainerのサンプルをちょこっといじって納得することにした。
のでなんとなくしか理解してません。今週は少しは勉強できるかな。

環境設定

  1. flex3-sdkここからとってきて /usr/local/ に展開。パスを通す。
  2. gainerもダウンロード。actionscript3/の下の gainer/ディレクトリを(とりあえず、よくわかんなかったので)同じく${flex3-sdk}/frameworks/project/framework/src/ の下にコピー(あんまり良くない?)
  3. MacOSXだとこれでOKだったがLinuxではなぜかダメ・・・?

mxmlcを実行すると

Loading configuration file /usr/local/flex3/frameworks/flex-config.xml

とか言っているので、このファイルにこんなの足す。

 35       <source-path>
 36          <path-element>/usr/local/flex3/frameworks/projects/framework/src/</    path-element>
 37       </source-path>

とりあえず読んでくれるようになった。ライブラリは毎回ソースコンパイルしているってこと??? あってるのかどうかわからないけど後で考えるとする。

いじる

三色LEDがあまっていたのでこれをアナログで弄ってみる。仕様書読んでなかたんだけど、いじってるうちにアノードコモンだと気がつく。危ない危ない。最初間違えてて逆に指してたよ。とりあえずハード準備よし。
actionscript3/下の demo.as を弄ってみる。なるほど。mxmlがUIファイルなのね。ここでスクリプトとかで読んでるのか。
乱数で三色の強度を出して、目標値まで ++ or -- して追従していく、を実装した。ダサいんだけど、とりあえず動かすことメインでサンプルの aOut を引数 a:Array(この書き方面白い)をとるようにしたやつ作って放り込む。
うまく行ってるみたいだけどコンパイラが警告出してる。

/usr/local/flex3/frameworks/projects/framework/src/gainer/Digital.as(40): col: 23 Warning: parameter 'values' に型宣言がありません。

                public function out(values):void {

ASは型にうるさいのだね。んで gainerはおそらくそれに追従できていないのだね。
まあとりあえずswfはできた。

できた

ランダムに色変化、とか書いていたけど、家に帰ってきて3軸加速度センサーが気になったので、加速度センサーの値に応じて光る、に仕様変更した。

変更部分(demo.as内)
public function aOut(ar:Array):void
{
    //same dout.as
    var aoutValues:Array = new Array(4);
    aoutValues[0] = ar[0];
    aoutValues[1] = ar[1];
    aoutValues[2] = ar[2];
    aoutValues[3] = 255;
    gnr.analogOutput(aoutValues);
}
private function switchInput(dummy:TimerEvent):void
{
    if("digital" == inputType.selectedValue)
    {
        dIn();
        aInText.text = "Disable";
    }
    else
    {
        aIn();
        var ar:Array = [130, 130, 189, 255];
        timingText.text ="";
        for (var i:Number = 0; i < 3 ; i++) {
            var dif:Number = Math.abs(gnr.analogInput[i]-ar[i]);
            ar[i] = 255- (dif > 5? dif-5 : 0);
            timingText.text += ar[i].toString() + ",";
        }
        aOut(ar);
    }
}

Cに毛が生えた程度の書き方になってる。Arrayの要素って型宣言できないのかな。ASよくわかんない。

動画


カメラだと淡い変化がわからない><

釣り糸買ってきてファイバーツリーでも作ろうかと思っております。烈しく季節はずれだだだ。