Sierpinski
Related images
ActionScript3 source code
/**
* Copyright 12346 ( http://wonderfl.net/user/12346 )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/6eP1
*/
//パスカルの三角形の各マスの数を定数mで割った余りを表示した三角形
//右上の2~9の数字クリックでmを設定
package{import flash.display.*;import flash.events.*;import flash.geom.*;
public class Sierpinski extends Sprite{
public var canvas:BitmapData=new BitmapData(465,465),
v1:Vector.<int>=new Vector.<int>,
v2:Vector.<int>=new Vector.<int>,
r:Rectangle=new Rectangle(0,0,8,8)
public function Sierpinski(){
var i:int
Image.init(this)
addChild(new Bitmap(canvas))
for(i=2;i<10;i++)addChild(new Button(i,d))
}
public function d(m:int):void{
var v:Vector.<int>,n:int,k:int
v1[0]=1
for(n=0;n<59;n++){
v=v1;v1=v2;v2=v
for(k=0;k<=n;k++){
canvas.copyPixels(Image.data[v1[k]=k?k-n?(v2[k-1]+v2[k])%m:1:1],r,new Point(228-4*n+8*k,n*8))
}
}
}
}}
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.system.*;
import flash.net.*;
class Image{
public static var data:Vector.<BitmapData>
public static function init($:Sierpinski):void{
data=new Vector.<BitmapData>()
for(var i:int=0;i<10;i++)data[i]=new BitmapData(8,8)
var l:Loader=new Loader
l.contentLoaderInfo.addEventListener("complete",function(e:Event):void{
var b:BitmapData=Bitmap(l.content).bitmapData,p:Point=new Point
for(i=0;i<10;i++)data[i].copyPixels(b,new Rectangle(i*8,0,8,8),p)
$.d(2)
})
l.load(new URLRequest("http://assets.wonderfl.net/images/related_images/6/6d/6d26/6d2610788cb00a4d50f7512a13ab209ca5da8ae0"),new LoaderContext(true))
}
}
class Button extends Sprite{
function Button(i:int,m:Function){
addChild(new Bitmap(Image.data[i]))
x=i*16+300,y=60
scaleX=scaleY=2
addEventListener("mouseDown",function():void{m(i)})
}
}