1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.display.StageScaleMode
public class Main extends Sprite
{
private var arc_mobile:Sprite = new Sprite();
public function Main():void
{
if (stage)
init();
else
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
stage.scaleMode = StageScaleMode.NO_SCALE; //pour éviter l'étirement automatique
stage.align = StageAlign.TOP_LEFT;
x = stage.stageWidth / 2;//origine au milieu de la scène pour la rotation
y = stage.stageHeight / 2;
with (arc_mobile.graphics)
{
beginFill(0xFFFF00);
drawCircle(0, 0, 175);
endFill();
lineStyle(5, 0xFF0000);
}
draw_arc(arc_mobile, 0, 0, 175, 0, Math.PI * 1.9);
addChild(arc_mobile);
arc_mobile.addEventListener(Event.ENTER_FRAME, tourner);
}
private function tourner(e:Event):void
{
arc_mobile.rotation += 1; //gros point fort de flash : pas besoin d'obturer puisque l'on travaille par couches
}
//une fonction pour tracer un arc de cercle trouvée sur le net->il y a mieux avec curveTo() mais j'ai la flemme de regarder sur mon ordi portable...
public function draw_arc(sprt:Sprite, center_x:Number, center_y:Number, radius:Number, angle_from:Number, angle_to:Number):void
{
var angle_diff:Number= angle_to - angle_from;
var steps:Number = Math.round(angle_diff*180/Math.PI);
var angle:Number = angle_from;
var px:Number = center_x + radius * Math.cos(angle);
var py:Number = center_y + radius * Math.sin(angle);
sprt.graphics.moveTo(px, py);
for (var i:int = 1; i <= steps; i++)
{
angle = angle_from + angle_diff / steps * i;
sprt.graphics.lineTo(center_x + radius * Math.cos(angle), center_y + radius * Math.sin(angle));
}
}
}
} |
Partager