flash on 2010-4-26

by 084
♥0 | Line 108 | Modified 2010-04-26 19:43:28 | MIT License
play

ActionScript3 source code

/**
 * Copyright 084 ( http://wonderfl.net/user/084 )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/xMMq
 */

package {
	import flash.display.Sprite;
	public class Tutorial10 extends Sprite{
	public function Tutorial10() {
		var dock:Dock = new Dock();
		dock.x = 150;
		dock.y = 180;
		addChild(dock);
	}
	}
}
import flash.display.Sprite;
import flash.events.Event;
import flash.display.SimpleButton;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;
class Dock extends Sprite {
	private var iconAry:Array = new Array(10);
	private var dockBg:DockBg = new DockBg();
	private var dockTop:int = -30;
	
	function Dock() {
		addChild(dockBg);
		setIcon();
		addEventListener(Event.ENTER_FRAME, IconMove);
	}
	private function IconMove(event:Event):void {
		if (0 < mouseX && mouseX < 300 && dockTop < mouseY && mouseY < 0) {
			dockTop = -120;
			for (var i:int = 0; i < 10; i++) {
				var distance:int = mouseX - i * 30 - 15;
				if ( -20 * Math.PI < distance && distance < 20 * Math.PI) {
				iconAry[i].scaleY += ((1 + 3 * Math.cos(distance / 40)) - iconAry[i].scaleY) / 1.5;
				iconAry[i].scaleX += ((1 + 3 * Math.cos(distance / 40)) - iconAry[i].scaleX) / 1.5;
				iconAry[i].x += (i * 30 + 15 - 120 * Math.sin(distance / 40) - iconAry[i].x) / 1.5;
				}else {
					iconAry[i].scaleY += (1 - iconAry[i].scaleY) / 1.5;
					iconAry[i].scaleX += (1 - iconAry[i].scaleX) / 1.5;
					if ( -20 * Math.PI > distance) {
						iconAry[i].x += (i * 30 + 120 + 25 - iconAry[i].x) / 1.5;
					}else {
						iconAry[i].x += (i * 30 - 120 + 5 - iconAry[i].x) / 1.5;
					}
				}
			}
		}else {
			dockTop = -30;
			for (i = 0; i < 10; i++) {
				iconAry[i].scaleY += (1 - iconAry[i].scaleY) / 1.5;
				iconAry[i].scaleX += (1 - iconAry[i].scaleX) / 1.5;
				iconAry[i].x = (i * 30 + 15 - iconAry[i].x) / 1.5;
			}
		}
		dockBg.x = iconAry[0].x - iconAry[0].width / 2;
		dockBg.width = iconAry[9].x + iconAry[9].width / 2 - (iconAry[0].x - iconAry[0].width / 2);
	}
	private function setIcon():void {
		for (var i:int = 0; i < 10; i++) {
			iconAry[i] = new Icon(i);
			iconAry[i].x = i * 30 + 15;
			addChild(iconAry[i]);
		}
		addEventListener(Event.ENTER_FRAME, IconMove);
	}
}
class DockBg extends Sprite {
	function DockBg() {
		graphics.beginFill(0xffff00, 0.5);
		graphics.drawRect(0, 0, 300, -30);
		graphics.endFill();
	}
}
class Icon extends Sprite {
	private var icon:SimpleButton = new SimpleButton();
	function Icon(i:int) {
		var upImg:Sprite = upIcon();
		var overImg:Sprite = upIcon();
		var label:TextField = makeLabel(i);
		overImg.addChild(label);
		icon.upState = upImg;
		icon.overState = overImg;
		icon.downState = overImg;
		icon.useHandCursor = true;
		icon.hitTestState = upImg;
		addChild(icon);
	}
	private function upIcon():Sprite {
		var Img:Sprite = new Sprite();
		Img.graphics.lineStyle(1, 0xff6600);
		Img.graphics.beginFill(0xff6600)
		Img.graphics.drawCircle(0, -15, 15);
		Img.graphics.endFill();
		return Img;
	}
	private function makeLabel(i:int):TextField {
		var tf:TextField = new TextField();
		tf.text = "アイコン" + i;
		tf.width = 30;
		tf.x = -15;
		tf.y = -36;
		var fmt:TextFormat = new TextFormat();
		fmt.color = 0x000000;
		fmt.size = 4;
		fmt.align = TextFormatAlign.CENTER;
		tf.setTextFormat(fmt);
		return tf;
	}
}