こんにちは。きんくまです。
Peftumeの△を買いましたです。
今回作ったやつです。
クリックするとスタートして、もう一回クリックすると止まります。
これが何かといいますと、
1. 数字をひとつずつ増やす(1,2,3,4…)
2. それをひとつずつ配列に格納
3. それを全て2進数に変換(1, 10, 11, 100…)
4. これをビットマップパターンに変換して模様を作る
ということをやっています。
この前買ったGMC-4の上部LEDをヒントにしてみました。
>> 4ビットマイコン GMC-4が面白い!
で、これが何かといいますとwonderflというflash投稿サービスがありまして。
そのwonderflで今CHECKMATEというコンテストをやっているんです。
お題があってみんながそれにこたえる見たいな。いわゆる大喜利です。それに投稿しました。
>> 2進数を可視化)forked from: fladdict challenge for professionals
wonderflについてもう少し詳しく説明すると、
・スクリプトを投稿して面白いネタを見せ合う
・その手の内(ソースコード)も勉強し合おう
・面白ネタを投稿すると反響(お気に入りがつく)があるよ
・ブラウザだけでスクリプトを書いてコンパイルできるよ
・特にお金はかかりません
みたいな感じです。
ASは全く触ったことないけど興味はある!みたいな方は、試しにやってみると面白いかもしれないです。
以下ソースコード
/** * Theme: * Play with BitmapPatterBuilder. * Purpose of this trial is to find the possibility of the dot pattern. * * by Takayuki Fukatsu aka fladdict * * * 増えていく数字を2進数にして可視化するとこんな感じ? **/ package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Graphics; import flash.display.Sprite; import flash.display.StageScaleMode; import flash.events.Event; import flash.events.MouseEvent; import flash.geom.Matrix; import flash.geom.Rectangle; [SWF(width="480", height="480", frameRate="24", backgroundColor="#000000")] public class Professional extends Sprite { public var cnt:int; public var baseInts:Array; public var colors:Array = [0xff00ff00, 0xff000000]; public var myg:Graphics; public var canvasBmd:BitmapData; public var startedFlag:Boolean = false; public function Professional() { stage.scaleMode = StageScaleMode.NO_SCALE; canvasBmd = new BitmapData(32, 480); myg = this.graphics; cnt = 0; baseInts = [0]; this.stage.addEventListener(MouseEvent.CLICK, clickHD); } private function clickHD(e:MouseEvent):void { if (startedFlag == false) { startedFlag = true; this.stage.addEventListener(Event.ENTER_FRAME, ef); }else { startedFlag = false this.stage.removeEventListener(Event.ENTER_FRAME, ef); } } private function ef(e:Event):void { if (baseInts.length > 160) { baseInts = [0]; cnt = 0; }else { cnt++; baseInts.push(cnt); } var pt:BitmapData = BitmapPatternBuilder.build(getPattern(), colors); var mtx:Matrix = new Matrix(); mtx.scale(3, 3); canvasBmd.lock(); canvasBmd.fillRect(new Rectangle(0, 0, canvasBmd.width, canvasBmd.height), 0); canvasBmd.draw(pt, mtx); canvasBmd.unlock(); myg.clear(); myg.beginBitmapFill(canvasBmd); myg.drawRect(0, 0, 480, 480); myg.endFill(); } private function getPattern():Array { //桁揃えしたものをパターンに変換 var i:int; var len:int = baseInts.length; var digit:int = cnt.toString(2).length; var temp:int = (new int(1)) << digit; var current:int; var ar:Array; var pt:Array = new Array(); for (i = 0; i < len; i++) { current = baseInts[i] | temp;//桁揃え ar = current.toString(2).substr(1).split(""); pt.push(ar); } return pt; } } } /**----------------------------------------------------- * Use following BitmapPatternBuilder class * * DO NOT CHANGE any codes below this comment. * * ----------------------------------------------------- */ import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Graphics; class BitmapPatternBuilder{ /** * creates BitmapData filled with dot pattern. * First parameter is 2d array that contains color index for each pixels; * Second parameter contains color reference table. * * @parameter pattern:Array 2d array that contains color index for each pixel. * @parameter colors:Array 1d array that contains color table. * @returns BitmapData */ public static function build(pattern:Array, colors:Array):BitmapData{ var bitmapW:int = pattern[0].length; var bitmapH:int = pattern.length; var bmd:BitmapData = new BitmapData(bitmapW,bitmapH,true,0x000000); for(var yy:int=0; yy<bitmapH; yy++){ for(var xx:int=0; xx<bitmapW; xx++){ var color:int = colors[pattern[yy][xx]]; bmd.setPixel32(xx, yy, color); } } return bmd; } /** * short cut function for Graphics.beginBitmapFill with pattern. */ public static function beginBitmapFill(pattern:Array, colors:Array, graphics:Graphics):void{ var bmd:BitmapData = build(pattern, colors); graphics.beginBitmapFill(bmd); bmd.dispose(); } }
■ 自作iPhoneアプリ 好評発売中!
・フォルメモ - シンプルなフォルダつきメモ帳
・ジッピー電卓 - 消費税や割引もサクサク計算!
■ LINEスタンプ作りました!
毎日使える。とぼけたウサギ