(section09-01 基本的な図形を描くから抜粋)
次の例はJapanと書いたjapan_mcインスタンスにトゲを刺すように線を引いています。まず、japan_mcの矩形内のランダムな点pt1(pt1x,pt1y)を求めます(9、10行目)。その座標をグローバル座標の点pt1に変換し、pt1がjapan_mcのイメージと衝突しているかどうかをhitTestPoint()で判定します(15行目)。そして、衝突しているならばその点を線を引く始点pt1にし、線の終点pt2は、ランダムに決めた線の長さと角度からPoint.polar(lineLength,rad)で計算します(19〜24行目)。そのままではpt2は(0,0)からの点になるので、pt1の位置からの距離と角度になるようにoffset()で座標を補正します(25行目)。これで線の始点pt1と終点pt2が決まったので、pt1にペン先を移動してpt2までの線を引きます(27、28行目)。
→swfを試す
[:script:]インスタンスにトゲを刺すように線を引く
*元々はここまでのサンプルだったんですが、せっかくなのでトゲが動くバージョンも作りました。(書籍には動くスクリプトも掲載してあります)
→トゲが動くバージョン
次の例はJapanと書いたjapan_mcインスタンスにトゲを刺すように線を引いています。まず、japan_mcの矩形内のランダムな点pt1(pt1x,pt1y)を求めます(9、10行目)。その座標をグローバル座標の点pt1に変換し、pt1がjapan_mcのイメージと衝突しているかどうかをhitTestPoint()で判定します(15行目)。そして、衝突しているならばその点を線を引く始点pt1にし、線の終点pt2は、ランダムに決めた線の長さと角度からPoint.polar(lineLength,rad)で計算します(19〜24行目)。そのままではpt2は(0,0)からの点になるので、pt1の位置からの距離と角度になるようにoffset()で座標を補正します(25行目)。これで線の始点pt1と終点pt2が決まったので、pt1にペン先を移動してpt2までの線を引きます(27、28行目)。
→swfを試す
[:script:]インスタンスにトゲを刺すように線を引く
//線(トゲ)の本数 var num:int=4000; //線を描くシェイプ var lines_shape:Shape=new Shape(); addChild(lines_shape); //線を繰り返し描く for (var i=1; i<=num; i++) { //線の始点pt1の座標 var pt1x:Number=japan_mc.width*Math.random(); var pt1y:Number=japan_mc.height*Math.random(); var pt1:Point=new Point(pt1x,pt1y); //pt1をグローバル座標に変換する pt1=japan_mc.localToGlobal(pt1); //始点pt1がjapan_mcに刺さっているならば線を描く if (japan_mc.hitTestPoint(pt1.x,pt1.y,true)) { //線のスタイル var lineColor:Number=0xFFFFFF*Math.random(); lines_shape.graphics.lineStyle(1,lineColor,0.6); //線の長さ var lineLength:Number=3+17*Math.random(); //線の角度 var rad:Number=2*Math.PI*Math.random(); //線の終点pt2を求める var pt2:Point=Point.polar(lineLength,rad); pt2.offset(pt1.x,pt1.y); //線を引く lines_shape.graphics.moveTo(pt1.x,pt1.y); lines_shape.graphics.lineTo(pt2.x,pt2.y); } }
*元々はここまでのサンプルだったんですが、せっかくなのでトゲが動くバージョンも作りました。(書籍には動くスクリプトも掲載してあります)
→トゲが動くバージョン