おいしいAS3 -13ページ目

flowerPower!



FlashCS5のデバッグ
多分なんかいままで見てくれてなかった
ところまで見てくれてるんだと思うんだけど

あからさまに重くなってる…


花の形を生成する関数の実験

先の直線と直線の交点を求める関数は
とりあえずはこれの為に作ってます

使いどころは他にもたくさんありますけど
目下これのために作りました





import simplizer.graphic.Pict
import flash.geom.Point;

var pct=addChildAt(new Pict(),0)
pct.onFrame=update

var flowerPointsList:Array=new Array()

function update(){
pct.clear()
var petal=Pict.petalPoints()
var newFlower=Pict.flowerPoints(null,Math.random()*10+20,Math.random()*3+3,Math.floor(Math.random()*7+5))
flowerPointsList.unshift(Pict.slide(newFlower,{x:mouseX+Math.random()*300-150,y:mouseY+Math.random()*300-150}))
while(flowerPointsList.length>60)flowerPointsList.pop()
flowerPointsList=Pict.transEach(flowerPointsList,Pict.swell,new Point(mouseX,mouseY),400,10)
pct.fillEach(flowerPointsList,[{curve:true,H:120,alpha:0},{H:0,alpha:1},{H:30,alpha:0}])
}




こういう事が大体こんなぐらいのコードでできます

それがPictクラス

この花の他に矢印とハートも作ったんですが
これが一番使いやすいだろうってことでこれだけ紹介

やっとPictクラスがPictクラスらしくなってきました

なくなっちゃったのかぁ

まあ、正直使ったことなかったんですけども

CS4で既に無くなってたらしいですね
タイムラインエフェクト

$おいしいAS3


しかし、動きがダサい

使えない

だから無くなったんでしょうかね

直線の交点を求める



前のは『線分が交わる場合にその交点を返す』ってもの

Box2D用に多角形の各辺が交じわるときに
その交点を求めるってのが主な目的でした

今回は『点Aを角度Aで通る直線と
点Bを角度Bで通る直線の
交点を求める処理』です


こっちの方が簡単なはずなんだけど
なんか最初回りくどいやりかた
しようとして無駄に時間食いました



getPlrCrs(点A,角度A,点B,角度B)

で点を返してきます

角度はラジアンです



public static function getPlrCrs(PntA:Point,RA:Number,PntB:Point,RB:Number):Point{
if(PntA.equals(PntB)){
return PntA.clone()
return;
}
if(RA%Math.PI==RB%Math.PI){
return null
return;
}
var vec:Point=PntB.subtract(PntA)
var R=Math.atan2(vec.y,vec.x)+Math.PI/2
var R1=R-RA
var R2=RB-R
return PntA.add(Point.polar(vec.length/(Math.tan(R1)+Math.tan(R2))/Math.cos(R1),RA))
}


処理はおおまかに言えば
点Aから目的の交点までの距離を
点A点Bの距離から三角関数を
ごにょごにょして求めて
点Aから角度Aでその距離
行った所の点を求める
っていうカンジです


点Aと点Bと交点の三角形に
交点からABに垂線を引いた図を考えると
どういうことやってるのかわかると思います


上のほうのif文は
そもそも点Aと点Bが同じならそれ返す
直線が平行だったら解なし
っていうことをやってるだけです