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

doraを動かしてみた forked from: ニコニコテレビちゃんを動かしてみた

ニコニコテレビちゃんを動かしてみた
// forked from nitoyon's ニコニコテレビちゃんを動かしてみた
// forked from uniq's ニコニコテレビちゃんを描いてみた
// ニコニコテレビちゃんを動かしてみた
package{
import flash.display.Sprite;
import flash.utils.*;
[SWF(width="465", height="465", backgroundColor="0x000000", frameRate="30")]    

public class DrawNicotvchan1 extends Sprite {
    public function DrawNicotvchan1() {
        y = 100;
        var bodies:Array = [];
        for(var i:int = 0; i < 10; i++){
            var body:Dora = new Dora(i);
            body.scaleX = body.scaleY = Math.pow(0.8, i - 1);
            //body.y = -i * Math.pow(0.9, i - 1) * 10;
            addChildAt(body, 0);
            bodies.push(body);
        }

        addEventListener("enterFrame", function(event:*):void{
            for(i = 0; i < bodies.length; i++){
                body = bodies[i];
				body.alpha = 1 - (i / 10);
                body.x = (body.x * (i * 2 + 1) + stage.mouseX) / (i * 2 + 2);
				body.y = -5 + (body.y * (i * 2 + 1) + (stage.mouseY-100)) / (i * 2 + 2);
            }
        });
    }
}
}


import flash.display.Sprite;
import flash.filters.GlowFilter;

class Dora extends Sprite{
	public function Dora(num:int) {	
		var sp:Sprite = new Sprite(); 
		sp.filters = [new GlowFilter(0xBB44BB,0.4,32,32)];
		addChild(sp);
		
		var head:Sprite = new Sprite();
		var w:Number = 94;
		var h:Number = 82;
		
		//頭を描く
		head.graphics.beginFill(0xCC0066); 
		head.graphics.moveTo(-w/2, 0);
		head.graphics.curveTo(-w/2+2, -h/2+1, 0, -h/2);
		head.graphics.curveTo(w/2-2, -h/2+1, w/2, 0);
		head.graphics.curveTo(w/2-1, h/2-1, 0, h/2);
		head.graphics.curveTo(-w/2+1, h/2-1, -w/2, 0);	
		head.graphics.endFill();
		sp.addChild(head);
		
		//顔の輪郭を描く
		var face:Sprite = new Sprite();
		face.y = 7;
		w = 86;
		h = 67;
		face.graphics.beginFill(0x000000); 
		face.graphics.moveTo(-w/2, 0);
		face.graphics.curveTo(-w/2+2, -h/2+1, 0, -h/2);
		face.graphics.curveTo(w/2-2, -h/2+1, w/2, 0);
		face.graphics.curveTo(w/2-1, h/2-1, 0, h/2);
		face.graphics.curveTo( -w/2+1, h/2 - 1, -w / 2, 0);
		sp.addChild(face);
		
		//目を描く
		var lefteye:Sprite = new Sprite();
		lefteye.x = -17.5;
		lefteye.y = -35;
		drawOval(lefteye, 17, 19);
		sp.addChild(lefteye);
		
		var eye1:Sprite = new Sprite();
		eye1.graphics.beginFill(0x000000);
        eye1.graphics.drawEllipse(0, 0, 8, 2);
        eye1.x = -14;
        eye1.y = -27;
        sp.addChild(eye1);
		
		var righteye:Sprite = new Sprite();
		righteye.x = 0.5;
		righteye.y = -35;
		drawOval(righteye, 17, 19);
		sp.addChild(righteye);
		
		var eye2:Sprite = new Sprite();
		eye2.graphics.beginFill(0x000000);
        eye2.graphics.drawEllipse(0, 0, 8, 2);
        eye2.x = 6;
        eye2.y = -27;
        sp.addChild(eye2);
		
		//鼻を描く
		var nose:Sprite = new Sprite();
		nose.x = -5.5;
		nose.y = -20;
		drawOval(nose, 11, 9);
		sp.addChild(nose);
		
		//鼻下を描く
		var noseline:Sprite = new Sprite();
		noseline.graphics.lineStyle(1, 0xFFFFFF);
		noseline.graphics.moveTo( -0.5, -18);
		noseline.graphics.lineTo( -0.5, 24);
		sp.addChild(noseline);
		
		//口を描く
		var mouse:Sprite = new Sprite();
		mouse.graphics.lineStyle(1, 0xFFFFFF);
		mouse.graphics.moveTo( -31, 6);
		mouse.graphics.curveTo( -24, 24, 0, 24);
		mouse.graphics.curveTo(24, 24, 31, 6);
		sp.addChild(mouse);
		
		//ヒゲを描く
		var higeR:Sprite = new Sprite();
		higeR.graphics.lineStyle(1, 0xFFFFFF);
		higeR.graphics.moveTo( -16, -13);
		higeR.graphics.lineTo( -35, -16);
		higeR.graphics.moveTo( -17, -9);
		higeR.graphics.lineTo( -36, -9);
		higeR.graphics.moveTo( -16, -5);
		higeR.graphics.lineTo( -35, -2);
		sp.addChild(higeR);
		
		var higeL:Sprite = new Sprite();
		higeL.graphics.lineStyle(1, 0xFFFFFF);
		higeL.graphics.moveTo( 16, -13);
		higeL.graphics.lineTo( 35, -16);
		higeL.graphics.moveTo( 17, -9);
		higeL.graphics.lineTo( 36, -9);
		higeL.graphics.moveTo( 16, -5);
		higeL.graphics.lineTo( 35, -2);
		sp.addChild(higeL);
		
		var count:int = num * 2;
        addEventListener("enterFrame", function(event:*):void{
            higeR.rotation = 10 * Math.cos(count / 20 * Math.PI);
            higeL.rotation = -higeR.rotation;
            eye1.y = -26 + Math.cos(count / 30 * Math.PI) * 5;
            eye2.y = -26 - Math.cos(count / 30 * Math.PI) * 5;
            count = (count + 1) % 360;
        });
	}
	
	private function drawOval(s:Sprite, w:Number, h:Number):void {
		s.graphics.beginFill(0xFFFFFF, 100); 
		s.graphics.moveTo(0, h/2);
		s.graphics.curveTo(0.5, 0.5, w/2, 0);
		s.graphics.curveTo(w-0.5, 0.5, w, h/2);
		s.graphics.curveTo(w-0.5, h-0.5, w/2, h);
		s.graphics.curveTo(0.5, h-0.5, 0, h/2);	
		s.graphics.endFill();
	}
	
}