看到op中飘扬的草帽旗,来了点灵感,决定用Box2d模拟一把。
具体原理
第一步,基于Box2d,用5*11个单元cell模拟组成草帽旗,每个单元相当于一个刚体b2Body(最上面的一排是静态,其他是动态的),用distancejoint距离关节来连接每个相邻的cell。添加到world里面。
第二步,render出图片,运用graphics里面的drawTriangles方法渲染出整个海贼旗。
没有什么特别的技巧。反倒是缺陷一堆,mouseup之后还会拖动旗帜,不能很好地模拟出旗帜的飘荡。应该有更好的模拟旗帜的模型。
代码就直接fork出来就行了
flash版
https://github.com/winterIce/strawHatFlag.git)
比较坑爹的是drawTriangles的前三个参数类型,第一个是Vector.<Number> ,第二个是Vector.<int>,第三个是Vector.<Number>,就第二个是int行。一开始是三个都写Number类型,老是报错,话说help里面也没有细说这个,结果最后google了一下才才出原因。
HTML5版
https://github.com/winterIce/strawHatFlagHtml5
其中的HTML5版本需要自己写flash里面的drawTriangles函数,很坑爹的说