gainerサンプルプログラム
AS勉強するぞー、と気合を入れていたのだけれど、なんか一気にやる気をそがれてしまったので、昨日はgainerのサンプルをちょこっといじって納得することにした。
のでなんとなくしか理解してません。今週は少しは勉強できるかな。
環境設定
- flex3-sdkをここからとってきて /usr/local/ に展開。パスを通す。
- gainerもダウンロード。actionscript3/の下の gainer/ディレクトリを(とりあえず、よくわかんなかったので)同じく${flex3-sdk}/frameworks/project/framework/src/ の下にコピー(あんまり良くない?)
- 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よくわかんない。
動画
カメラだと淡い変化がわからない><
釣り糸買ってきてファイバーツリーでも作ろうかと思っております。烈しく季節はずれだだだ。