Date : 2006/01/03
Author : HOSHI Tetsuya
Url : http://www.javac.jp

HOSSY.NET | swf server side compiler
sample sources


class Sample004 {
  var chara;
  var uniqDepth;

  function Sample004 (path) {
    initialize();
    chara = path.createEmptyMovieClip("chara", 1);
    var mc;
    mc = drawCircle(chara, 100, 100, 50);
    setEnterFrame(mc);
    mc = drawCircle(chara, 70, 100, 15);
    setEnterFrame(mc);
    mc = fillCircle(chara, 70, 100, 10);
    setEnterFrame(mc);
    mc = drawCircle(chara, 130, 100, 15);
    setEnterFrame(mc);
    mc = fillCircle(chara, 130, 100, 10);
    setEnterFrame(mc);
    mc = drawLine(chara, 80, 130, 120, 130);
    setEnterFrame(mc);
  }

  function setEnterFrame (target) {
    var ref = this;
    target.x0 = target._x;
    target.onEnterFrame = function () {
      ref.onEnterFrameHandler(this);
    };
  }

  function onEnterFrameHandler (target) {
    var t = getTimer();
    target._x = target.x0 
    + target._width / 4 * Math.sin(2 * Math.PI * (t % 1000) / 1000);
  }



  function initialize () {
    uniqDepth = 1;
  }

  function drawLine (target, x1, y1, x2, y2) {
    var depth = uniqDepth;
    uniqDepth ++;
    var mc = target.createEmptyMovieClip("mc" + depth, depth);
    mc.lineStyle(3, 0x000000);
    mc.moveTo(x1, y1);
    mc.lineTo(x2, y2);
    return mc;
  }

  function drawCircle (target, x, y, r) {
    var depth = uniqDepth;
    uniqDepth ++;
    var mc = target.createEmptyMovieClip("mc" + depth, depth);
    var rt45 = Math.tan(Math.PI / 8) * r;
    var rs90 = Math.sin(Math.PI / 4) * r;

    mc.lineStyle(3, 0x000000);
    mc.moveTo(-r+x, y);
    mc.curveTo (-r + x, -rt45 + y, -rs90 + x, -rs90 + y);
    mc.curveTo (-rt45 + x, -r + y, x, -r + y);
    mc.curveTo (rt45 + x, -r + y, rs90 + x, -rs90 + y);
    mc.curveTo (r + x, -rt45 + y, r + x, y);
    mc.curveTo (r + x, rt45 + y, rs90 + x, rs90 + y);
    mc.curveTo (rt45 + x, r + y, x, r + y);
    mc.curveTo (-rt45 + x, r + y, -rs90 + x, rs90 + y);
    mc.curveTo (-r + x, rt45 + y, -r + x, y);

    return mc;
  }

  function fillCircle (target, x, y, r) {
    var depth = uniqDepth;
    uniqDepth ++;
    var mc = target.createEmptyMovieClip("mc" + depth, depth);
    var rt45 = Math.tan(Math.PI / 8) * r;
    var rs90 = Math.sin(Math.PI / 4) * r;

    mc.lineStyle(undefined);
    mc.beginFill(0x000000);
    mc.moveTo(-r+x, y);
    mc.curveTo (-r + x, -rt45 + y, -rs90 + x, -rs90 + y);
    mc.curveTo (-rt45 + x, -r + y, x, -r + y);
    mc.curveTo (rt45 + x, -r + y, rs90 + x, -rs90 + y);
    mc.curveTo (r + x, -rt45 + y, r + x, y);
    mc.curveTo (r + x, rt45 + y, rs90 + x, rs90 + y);
    mc.curveTo (rt45 + x, r + y, x, r + y);
    mc.curveTo (-rt45 + x, r + y, -rs90 + x, rs90 + y);
    mc.curveTo (-r + x, rt45 + y, -r + x, y);
    mc.endFill();

    return mc;
  }

  static function main () {
    var s = new Sample004(_root);
  }

}




back to list
back to launch