タグ

ブックマーク / nutsu.com (4)

  • NUTSU » [as]偽3次ベジェ曲線

    ActionScriptで3次ベジェ曲線を描く場合、自前で3次ベジェの関数を用意して描きます。しかしながら、正確じゃなくても、近似で描きたいなら、いろいろ方法があると思われます。その方法の内でも、かなり大雑把な方法を紹介します。 通常、3次ベジェの関数を用意して描画する場合、素直にスクリプトを書くとこんな感じになります。 //始点(x0,y0),終点(x1,y1),コントロール点(cx0,cy0),コントロール点(cx1,cy1) function draw3DBezje( x0:Number,y0:Number,x1:Number,y1:Number,cx0:Number,cy0:Number,cx1:Number,cy1:Number ,step:int=100):void { var k:Number = 1.0/step; graphics.moveTo(x0,y0); for(

  • NUTSU » [as]GridContainer

    格子上にDisplayObjectを配置するクラスです。特筆すべき点はないですが、よく使うかなぁと。 こんな感じです。 ソース的には、GridLayoutで並べるルールをつくって、GridContainerにわせる形です。GridContainerには、addChild等、DisplayContainerの追加関数を使います。 //レイアウト設定(レイアウトルール,単位グリッド数) var glayout:GridLayout = new GridLayout(GridLayout.HORIZONTAL,20); //グリッドコンテナ(レイアウト,グリッド幅,グリッド高) var container:GridContainer = new GridContainer( glayout, 20, 20 ); addChild(container); for( var i:int=0;i<4

  • NUTSU » [as]円と円の交点

    半径r0 中心(x0,y0) の円と、半径r1 中心(x1,y1) の円との交点を、ActionScript的に求めてみます。ActionScript的と言っても、プログラムをそれで記述するだけのことですが… まずは、中心間の距離Lから入ります。 //円座標 var p0:Point = new Point(x0,y0); var p1:Point = new Point(x1,y1); //中心間ベクトル var dv:Point = p1.subtract(p0); //距離 var L:Number = dv.length; //距離がLの場合 if( L==(r0+r1) ){ //交点1つ(接点) }else if( L<(r0+r1) && L>Math.abs(r0-r1) ){ //交点2つ }else{ //交点なし } 接点の場合は、中心間ベクトルの距離r0の地点なので

  • NUTSU » [as]破線描画

    先のベジェ曲線の破線描画に、直線の破線描画を加えて、moveTo、lineTo、curveToで破線を描画するものをまとめてみました。 moveTo、lineTo、curveToといってもGraphicsの拡張ではありませんが…。 サンプルでは、以下のようなスクリプトで破線を描画しています。 //引きのoffsetは破線開始オフセット function draw(offset:Number):void{ //破線描画オブジェクト var g:DashLine = new DashLine( graphics, 6 ); //ShapeData var dat:XML = <shape> <edge x0="334.35" y0="60.15" x1="338.1" y1="63" x2="341.6" y2="66.5" line="0" /> <edge x0="341.6" y0="6

  • 1