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

新技術と12人の英雄たち

えー。ごめんなさい。
* 最近はてぶに新技術のホットエントリー
* (わかんない人は「水着 新技術」でググって)があったので、
* これをCHECKMATE用に作ればいいんじゃね?と思ったのが発端。
* 適当に作って、いざ画像を加工しようとして、その画像どうしようか考えた。
* よし、twitterで募集しよう!←ここが間違い
* 何故か12人もいいよ!っていう人が出てきて俺ビビる。
* アイコンがアイコンなだけに予想以上にえっちぃ感じがでない。
* で、完成?したのがこれ。
* 
* 最初に出るのは1割エッチ。6割イミフ。3割可愛い。ぐらいの比率。
* 画像はランダムで、12人の中の一人のアイコンです。
* 
* 普通にloadから、画像を読み込んで、画面ポチポチ押して、
* filter押せば、例の新技術の完成です。
* 円の右はじドラックすれば大きさ返れます。
* 
* 何に時間かかったって、一番は12人に対して一つ一つ加工していったところ。
* サンプルとして1つあればいいやと、twitterで募集したのが間違い。
* だけど、せっかく許可もらったんだし全員分頑張ったよ!
* 提供ありがとうございます!
* いろいろひどい使い方してるので「俺はもっとセクシーだ」などの苦情あったら言ってね。
* 
* @author coppieee
/**
 * Copyright coppieee ( http://wonderfl.net/user/coppieee )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/f24V
 */

// forked from checkmate's Checkmate Vol.6 Amatuer
/**
 * えー。ごめんなさい。
 * 最近はてぶに新技術のホットエントリー
 * (わかんない人は「水着 新技術」でググって)があったので、
 * これをCHECKMATE用に作ればいいんじゃね?と思ったのが発端。
 * 適当に作って、いざ画像を加工しようとして、その画像どうしようか考えた。
 * よし、twitterで募集しよう!←ここが間違い
 * 何故か12人もいいよ!っていう人が出てきて俺ビビる。
 * アイコンがアイコンなだけに予想以上にえっちぃ感じがでない。
 * で、完成?したのがこれ。
 * 
 * 最初に出るのは1割エッチ。6割イミフ。3割可愛い。ぐらいの比率。
 * 画像はランダムで、12人の中の一人のアイコンです。
 * 
 * 普通にloadから、画像を読み込んで、画面ポチポチ押して、
 * filter押せば、例の新技術の完成です。
 * 円の右はじドラックすれば大きさ返れます。
 * 
 * 何に時間かかったって、一番は12人に対して一つ一つ加工していったところ。
 * サンプルとして1つあればいいやと、twitterで募集したのが間違い。
 * だけど、せっかく許可もらったんだし全員分頑張ったよ!
 * 提供ありがとうございます!
 * いろいろひどい使い方してるので「俺はもっとセクシーだ」などの苦情あったら言ってね。
 * 
 * @author coppieee
 */
package 
{
	import flash.trace.Trace;
	import com.bit101.components.CheckBox;
	import com.bit101.components.PushButton;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.net.FileReference;
	import flash.net.URLRequest;
	import flash.system.LoaderContext;
	import flash.utils.ByteArray;
	import flash.display.Graphics;
	import flash.utils.Dictionary;
	
	public class Main extends Sprite 
	{
		private static const
			TON1517:String = "http://a1.twimg.com/profile_images/601906360/91fc5b93ae08b2be7a2ec02b5bb1ae9bf1f5f0c7-sushi.png",
			MOGERA:String = "http://a3.twimg.com/profile_images/609493003/IMG_0001.jpg",
			SELFLASH:String = "http://a1.twimg.com/profile_images/504166258/logo.png",
			NYARINEKO:String = "http://a1.twimg.com/profile_images/605590286/nyarineko.jpg",
			UWITENPEN:String = "http://a1.twimg.com/profile_images/117413302/icon_sakura.jpg",
			CLOCKMAKER:String = "http://a3.twimg.com/profile_images/611534823/mooning_light_core.jpg",
			MUTAST:String = "http://a1.twimg.com/profile_images/363354970/73386_4004462371_bigger.jpg",
			MATSUMOS:String = "http://a1.twimg.com/profile_images/556441896/kitte.gif.png",
			NANLOW:String = "http://a3.twimg.com/profile_images/610597921/pen.jpg",
			Y_OKA:String = "http://a3.twimg.com/profile_images/601838299/cdeccb4018d5aad0a9b22c292b5d20537833b691-sushi.png",
			FLASHER_BBB:String = "http://a3.twimg.com/profile_images/610607067/b_b-bigelow.jpg",
			SIDE_TANA:String = "http://a3.twimg.com/profile_images/611512147/s_06-08-03_03-271.jpg";
		private static const URLS:Array = [
			TON1517, MOGERA, SELFLASH, NYARINEKO, UWITENPEN,
			CLOCKMAKER,MUTAST,MATSUMOS,NANLOW,Y_OKA,FLASHER_BBB,SIDE_TANA];
		private static function get circleMap():Dictionary {
			if (_circleMap) { return _circleMap }
			_circleMap = new Dictionary();
			_circleMap[TON1517] = [new Circle(160.45, 307, 80.25), new Circle(390.65, 193.05, 63.3), new Circle(331.9, 321.95, 70.4), new Circle(298, 39.3, 92.85), new Circle(117.9, 117.85, 97.2)];
			_circleMap[MOGERA] = [new Circle(154.8, 398.45, 100.25), new Circle(372.7, 406.4, 106.25), new Circle(264.2, 108.5, 199.8)];
			_circleMap[SELFLASH] = [new Circle(464.55, 355.95, 186.55), new Circle(70.65, 369.1, 183.85), new Circle(251.6, -59.45, 256.05)];
			_circleMap[NYARINEKO] = [new Circle(227.05,300.65,59.75),new Circle(84.25,299.65,62.4),new Circle(138.75,114.75,49.75),new Circle(123.45,190.15,20.6),new Circle(98.2,84.1,9.95),new Circle(157.55,67.3,13.3),new Circle(158.25,240.25,21.2),new Circle(316.55,163.15,97.6),new Circle(179.1,186.05,21.9),new Circle(390.35,306.55,42.45)]
			_circleMap[UWITENPEN] = [new Circle(248.7, 82.15, 156.65), new Circle(397.55, 348.3, 136.05), new Circle(111.3, 357.6, 136.1), new Circle(430, 168.1, 37.85), new Circle(75.4, 180.35, 29.85)];
			_circleMap[CLOCKMAKER] = [new Circle(85.25, 99.45, 51.75), new Circle(345.4, 320.8, 11.95), new Circle(346.2, 273.85, 9.3), new Circle(160.1, 170.2, 39.2), new Circle(244.05, 216.7, 48.45), new Circle(230.3, 135.45, 30), new Circle(173.55, 97, 25.9), new Circle(342.55, 227.7, 17.95), new Circle(345.75, 378.4, 11.3)];
			_circleMap[MUTAST] = [new Circle(322.35, 305.65, 64.4), new Circle(212.55, 362.5, 54.45), new Circle(88.3, 410.25, 65.7), new Circle(337.9, 182.55, 21.9), new Circle(170.95, 90.25, 154), new Circle(408.05, 64.8, 71), new Circle(422, 203.55, 55.75), new Circle(121.6, 280.55, 30), new Circle(472.75, 345.15, 79.65), new Circle(225.05, 272.7, 29.9)];
			_circleMap[MATSUMOS] = [new Circle(144.65, 94.25, 129.45), new Circle(365.35, 22.75, 159.35), new Circle(231.5, 167.4, 43.8), new Circle(169.75, 349.55, 30.55), new Circle(250.1, 378.7, 82.95), new Circle(376.95, 352.4, 69.05), new Circle(293.05, 172.6, 30)];
			_circleMap[NANLOW] = [new Circle(227.55, 280.5, 55.75), new Circle(263.95, 128.25, 93.6), new Circle(348.95, 259.95, 56.45), new Circle(179.9, 61.7, 30), new Circle(313.25, 31.25, 30)];
			_circleMap[Y_OKA] = [new Circle(367.7, 387.05, 43.15), new Circle(242.6, 201.45, 171.25), new Circle(166, 53.55, 49.8), new Circle(107.7, 374.1, 30), new Circle(346.25, 46.5, 48.45), new Circle(431.15, 325.95, 30)];
			_circleMap[FLASHER_BBB] = [new Circle(369.15, 51.2, 78.35), new Circle(442.55, 278.6, 154.65), new Circle(199.35, 63.25, 78.35), new Circle(58, 153.5, 73), new Circle(299.95, 240.7, 84.95), new Circle(196.9, 269, 106.85), new Circle(86.05, 15.4, 30), new Circle(215.6, 452.05, 185.2), new Circle(47.5, 276.25, 30)];
			_circleMap[SIDE_TANA] = [new Circle(244.4, 121, 57.05), new Circle(254.15, 7.85, 43.8), new Circle(376.4, 56.9, 73.7), new Circle(330.7, 195.7, 43.15), new Circle(254.9, 312.4, 78.3), new Circle(117.65, 204.05, 74.35), new Circle(116.5, 51.5, 48.45), new Circle(420.55, 287.4, 73.7), new Circle(429, 160.35, 30)];
			return _circleMap;
		}
		private static var _circleMap:Dictionary;
		
		private static const
			CANVAS_WIDHT:Number = 400,
			CANVAS_HEIGHT:Number = 462;
		public function Main():void
		{
			dataContainer = new Sprite();
			addChild(dataContainer);
			
			background = new Sprite();
			var g:Graphics = background.graphics;
			g.beginFill(0xFFFFAA,0.1);
			g.drawRect(0, 0, 462, 462);
			g.endFill();
			addChild(background);
			
			var loadButton:PushButton = new PushButton(this, 0, 0, "load");
			loadButton.width = 62;
			//var saveButton:PushButton = new PushButton(this, 0, 20, "save");
			//saveButton.width = 62;
			loadButton.addEventListener(MouseEvent.CLICK, function(e:Event):void {
				var f:FileReference = new FileReference();
				f.addEventListener(Event.SELECT, function(e:Event):void {
					f.addEventListener(Event.COMPLETE, function(e:Event):void {
						loadFile(f.data);
					});
					f.load();
				});
				f.browse();
			});
			//saveButton.addEventListener(MouseEvent.CLICK, function(e:Event):void {
				//trace("[" +
					//circles.map(function(x:Circle, ...rest):String {
						//return x.toString()}).join(",") + "]");
			//});
			
			filterBox = new CheckBox(this, 0, 40, "filter");
			filterBox.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void {
				if (filterBox.selected)
				{
					data.mask = canvas;
				}else {
					data.mask = null;
				}
			});
			
			dataContainer.x = loadButton.width;
			circles = [];
			background.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void {
				var circle:Circle =  new Circle(mouseX, mouseY);
				canvas.addChild(circle);
				background.addEventListener(MouseEvent.MOUSE_UP, circle.onMouseUp);
				circles.push(circle);
			});
			canvas = new Sprite();
			addChild(canvas);
			var url:String = URLS[int(URLS.length*Math.random() )]
			loadImage(url);
			//loadImage(NANLOW);
			circles = circleMap[url];
			circles.forEach(function(x:Circle, ...rest):void {
				canvas.addChild(x);
				background.addEventListener(MouseEvent.MOUSE_UP, x.onMouseUp);
			});
			
			addEventListener(Event.COMPLETE, function(e:Event):void {
				filterBox.selected = true;
				data.mask = canvas;
				removeEventListener(Event.COMPLETE, arguments.callee);
			});
		}
		private var circles:Array;
		private var data:Bitmap;
		private var dataContainer:Sprite;
		private var canvas:Sprite;
		private var background:Sprite;
		private var filterBox:CheckBox;
		private function init():Loader {
			if (data != null) {
				data.mask = null;
				filterBox.selected = false;
				dataContainer.removeChild(data);
				data.bitmapData.dispose();
				circles.forEach(function(x:Circle, ...rest):void { 
					canvas.removeChild(x);
					background.removeEventListener(MouseEvent.MOUSE_UP, x.onMouseUp);
				} );
				circles = [];
			}
			var loader:Loader = new Loader();
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void {
				data = Bitmap(loader.content);
				//if (data.width > CANVAS_WIDHT) {
					data.scaleY = data.scaleX =  CANVAS_WIDHT/data.width;
				//}else {
					
				//}
				//if (data.height > CANVAS_HEIGHT) {
					//data.scaleX = data.scaleY = CANVAS_HEIGHT / data.height;
					//
				//}
				dataContainer.addChild(data);
				dispatchEvent(new Event(Event.COMPLETE));
			});
			return loader;
		}
		private function loadFile(bytes:ByteArray):void {
			init().loadBytes(bytes);
		}
		private function loadImage(url:String ):void {
			init().load(new URLRequest(url), new LoaderContext(true));
		}
	}
}
import flash.display.DisplayObjectContainer;
import flash.display.Graphics;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.geom.Point;
class Circle extends Sprite {
	public function get color():uint { return _color; }
	public function set color(value:uint):void {
		_color = value;
		draw();
	}
	private var _color:uint = 0x55FFFF;
	public function get radius():Number { return _radius; }
	public function set radius(value:Number):void {
		_radius = value;
		draw();
	}
	private var _radius:Number;
	
	//public function onMouseUp(e:MouseEvent):void {
		//stopDrag();
	//}
	public var onMouseUp:Function;
	
	public function Circle(	x:Number = 0, y:Number = 0 ,radius_:Number = 30) {
		this.x = x;
		this.y = y;
		//this._radius = radius;
		_circleView = new Sprite();
		addChild(_circleView);
		
		
		_circleView.addEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent):void {
			startDrag();
		});
		_circleView.addEventListener(MouseEvent.MOUSE_UP, function(e:MouseEvent):void {
			stopDrag();
		});
		
		_scaleView = new Sprite();
		
		var sg:Graphics = _scaleView.graphics;
		sg.beginFill(0xFFCCCC);
		sg.drawRect( -5, -5, 5, 5);
		sg.endFill();
		_scaleView.y = +_scaleView.height / 2;
		addChild(_scaleView);
		
		
		var scaleOnEnterFrame :Function = function(e:Event):void {
			_scaleView.x = mouseX ;//+ _scaleView.width/2;
			radius = _scaleView.x ;//- _scaleView.width/2;
		}
		var scaling:Boolean = false;
		_scaleView.addEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent):void {
			if (!scaling) {
				addEventListener(Event.ENTER_FRAME, scaleOnEnterFrame);
			}
			scaling = true;
		});
		
		_scaleView.addEventListener(MouseEvent.MOUSE_UP, function(e:MouseEvent):void {
			if (scaling) {
				removeEventListener(Event.ENTER_FRAME, scaleOnEnterFrame);
			}
			scaling = false;
		});
		this.radius = radius_;
		_scaleView.x = radius ;//+_scaleView.width / 2;
		
		onMouseUp = function(e:MouseEvent):void {
			stopDrag();
			if (scaling) {
				removeEventListener(Event.ENTER_FRAME, scaleOnEnterFrame);
			}
			scaling = false;
		};
	}
	private var _circleView:Sprite;
	private var _scaleView:Sprite;
	private function draw():void {
		var g:Graphics = _circleView.graphics;
		g.clear();
		g.beginFill(color,0.5);
		g.drawCircle(0, 0, radius);
		g.endFill();
	}
	public override function toString():String {
		return "new Circle("+x+","+y+","+radius+")";
	}
}