hanyeah 专注于AS

矩形切割

as3实现点击舞台,将舞台切割成一个个的小矩形,按下shift键可以改变切割的方向。

demo:

获得 Adobe Flash Player

实现代码:

package  {
	
	import flash.display.Graphics;
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Rectangle;
	import flash.ui.Mouse;
	
	
	public class Main extends MovieClip {
		
		public var cursor:MovieClip;
		private var rects:Array;
		private var bg:Sprite;
		private var rect:Rectangle = new Rectangle(0, 0, 500, 400);
		public function Main() {
			// constructor code
			
			cursor.mouseEnabled = cursor.mouseChildren = false;
			
			bg = new Sprite();
			addChild(bg);
			
			
			rects = [rect];
			updateBg();
			stage.addEventListener(MouseEvent.CLICK, mouseClickHandler);
			
			Mouse.hide();
			stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
		}
		
		private function mouseMoveHandler(e:MouseEvent):void 
		{
			cursor.x = mouseX;
			cursor.y = mouseY;
			cursor.rotation = e.shiftKey?0:90;
			e.updateAfterEvent();
		}
		private function mouseClickHandler(e:MouseEvent):void 
		{
			if (!rect.contains(mouseX,mouseY)) {
				return;
			}
			for (var i:int = 0; i < rects.length;i++ ) {
				var rect:Rectangle = rects[i];
				if (rect.contains(mouseX, mouseY)) {
					var rect1:Rectangle;
					var rect2:Rectangle;
					if (e.shiftKey) {
						rect1 = new Rectangle(rect.x, rect.y, rect.width, mouseY - rect.y);
						rect2 = new Rectangle(rect.x,mouseY,rect.width,rect.bottom-mouseY);
					}
					else {
						rect1 = new Rectangle(rect.x, rect.y, mouseX-rect.x, rect.height);
						rect2 = new Rectangle(mouseX, rect.y, rect.right-mouseX, rect.height);
					}
					rects.splice(i, 1, rect1, rect2);
					break;
				}
			}
			updateBg();
		}
		
		private function updateBg():void 
		{
			var g:Graphics =bg.graphics;
			g.clear();
			for (var i:int = 0; i < rects.length;i++ ) {
				var rect:Rectangle = rects[i];
				g.lineStyle(1, 0x000000);
				g.drawRect(rect.x, rect.y, rect.width, rect.height);
			}
		}
	}
	
}

源码打包下载

2016年7月25日 | 发布:hanyeah | 分类:as3.0笔记 | 评论:0

发表留言: