In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: はちゅね

元ネタ=> http://blog.livedoor.jp/k_yon/archives/51745838.html
複数画像の動的ロードって、うまいやり方ないもんですかねー?
サムネイルがエラー表示になってる・・ これってタイミング狙ってキャプチャできないかなぁ?
はちゅねは幾つかのパーツに分かれており、パーツ.rotate(回転量)として、
間接を中心に,指定した部分(と連なる部分)を動かすことができます。
身体全体 => body
頭 => head0とhead1 注.同時に操作してください!!
右手 => arm_r
ネギ => negi
右ツインテ => hair_r
左ツインテ => hair_l
ネギ振りしました。
Get Adobe Flash player
by dimentity 31 Jan 2009
    Embed
// forked from yoneken's はちゅね
// 元ネタ=> http://blog.livedoor.jp/k_yon/archives/51745838.html
// 複数画像の動的ロードって、うまいやり方ないもんですかねー?
//
// サムネイルがエラー表示になってる・・ これってタイミング狙ってキャプチャできないかなぁ?
//
// はちゅねは幾つかのパーツに分かれており、パーツ.rotate(回転量)として、
// 間接を中心に,指定した部分(と連なる部分)を動かすことができます。
//
// 身体全体 => body
// 頭 => head0とhead1 注.同時に操作してください!!
// 右手 => arm_r
// ネギ => negi
// 右ツインテ => hair_r
// 左ツインテ => hair_l

// ネギ振りしました。

package {
  [SWF(width="350", height="300", backgroundColor="#ffffff", frameRate="30")]
  import flash.display.Sprite;
  import flash.events.Event;

  public class HatyuneStage extends Sprite
  {
    public var miku:Hatyune;
    private static const NECK:Number = 0.094;
    private var neckr:Number;
    public function HatyuneStage()
    {
      miku = new Hatyune();
      addChild(miku);
      miku.x = 60;
      miku.y = 80;
      neckr = 0.0;
      addEventListener(Event.ENTER_FRAME, loop);
    }
    private function loop(e:Event):void{
      // この部分に、はちゅねのポーズを記述しましょう
      // 例. 右手を動かす
      // miku.arm_r.rotate(0.5);
      miku.hair_l.rotate(Math.sin(neckr)/5);
      miku.hair_r.rotate(-Math.sin(neckr)/5);
      miku.negi.rotate(Math.sin(neckr)/2);
      miku.arm_r.rotate(Math.sin(neckr)/2);
      miku.head0.rotate(Math.sin(neckr)/15);
      miku.head1.rotate(Math.sin(neckr)/15);
      miku.body.rotate(Math.cos(neckr)/20);
      if(neckr < Math.PI) neckr += NECK;
      else neckr = -Math.PI;
      // ここまで
    }
  }
}	


// ------はちゅねを動かすだけなら、こっから下は読まなくてOK!-------


import flash.display.Loader;
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.net.URLRequest;

class Hatyune extends Sprite
{
	public var arm_r:Parts;
	public var head0:Parts;
	public var head1:Parts;
	public var body:Parts;
	public var hair_l:Parts;
	public var hair_r:Parts;
	public var negi:Parts;

	private var lcount:int;
	private var lbody:Loader;
	private var lhair_l:Loader;
	private var lhair_r:Loader;
	private var lhand_r:Loader;
	private var lface:Loader;
	private var lnegi:Loader;

	public function Hatyune()
	{
		lcount=0;
        lbody= new Loader();
        lbody.contentLoaderInfo.addEventListener("complete", loadImg);
        lbody.load(new URLRequest("http://image.blog.livedoor.jp/k_yon/imgs/6/5/659cbeb2.png"));  
        lhair_l = new Loader();
        lhair_l.contentLoaderInfo.addEventListener("complete", loadImg);
        lhair_l.load(new URLRequest("http://image.blog.livedoor.jp/k_yon/imgs/1/4/14e2dce1.png"));
        lhair_r = new Loader();
        lhair_r.contentLoaderInfo.addEventListener("complete", loadImg);
        lhair_r.load(new URLRequest("http://image.blog.livedoor.jp/k_yon/imgs/0/9/09def37a.png"));
        lhand_r = new Loader();
        lhand_r.contentLoaderInfo.addEventListener("complete", loadImg);
        lhand_r.load(new URLRequest("http://image.blog.livedoor.jp/k_yon/imgs/b/c/bc0ba0f1.png"));
        lface = new Loader();
        lface.contentLoaderInfo.addEventListener("complete", loadImg);
        lface.load(new URLRequest("http://image.blog.livedoor.jp/k_yon/imgs/c/c/cc3baf4f.png"));
        lnegi = new Loader();
        lnegi.contentLoaderInfo.addEventListener("complete", loadImg);
        lnegi.load(new URLRequest("http://image.blog.livedoor.jp/k_yon/imgs/4/c/4cd1ba9c.png"));

		body = new Parts(0,0,200,140);
		head0 = new Parts(106,0,212,112);
		hair_r = new Parts(0,6,77,13);
		arm_r = new Parts(0,91,197,119);
		negi = new Parts(0,0,118,15);
		head1 = new Parts(106,0,212,112);
		hair_l = new Parts(132,6,141,16);

	}
	private function loadImg(e:flash.events.Event):void{
		if(++lcount==6){
	    		lbody.width=116;lbody.height=172;lbody.x=150;lbody.y=93;
			lhair_l.width=82;lhair_l.height=257;
			lhair_r.width=85;lhair_r.height=247;
			lhand_r.width=96;lhand_r.height=43;lhand_r.x=113;lhand_r.y=5;
			lface.width=114;lface.height=111;lface.x=47;lface.y=0;
			lnegi.width=124;lnegi.height=44;
			hair_r.addChild(lhair_r);
			head0.addChild(hair_r);
			body.addChild(head0);
			negi.addChild(lnegi);
			arm_r.addChild(negi);
			arm_r.addChild(lhand_r);
			body.addChild(arm_r);
			body.addChild(lbody);
			head1.addChild(lface);
			hair_l.addChild(lhair_l);
			head1.addChild(hair_l);
			body.addChild(head1);
			addChild(body);
		}
	}
}

// --------------------------------------------

class Parts extends Sprite
{
	public var originX:Number;
	public var originY:Number;
	public var baseX:Number;
	public var baseY:Number;
	private var GShape:flash.display.Shape;

	public function Parts( bx:Number, by:Number, gx:Number, gy:Number )
	{
		x = baseX = bx;
		y = baseY = by;
		originX = gx;
		originY = gy;
	}
	public function rotate( rad:Number ):void
	{
		var tmpX:Number = baseX - originX;
		var tmpY:Number = baseY - originY;
		x = tmpX * Math.cos(rad) - tmpY * Math.sin(rad) + originX;
		y = tmpY * Math.cos(rad) + tmpX * Math.sin(rad) + originY;
		rotation = rad / Math.PI * 180;
	}
	public function showRotatePoint():void
	{
		GShape = new flash.display.Shape();
		GShape.graphics.beginFill(0xff0000);
		GShape.graphics.drawCircle(0,0,5);
		GShape.graphics.endFill();
		GShape.x = originX;
		GShape.y = originY;
		addChild(GShape);
	}
	public function hideRotatePoint():void
	{
		removeChild(GShape);
	}
}