⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 controller.as

📁 VR机器人
💻 AS
字号:
import mx.controls.*;
import flash.filters.DropShadowFilter;
import flash.filters.BlurFilter;
//
class Controller extends MovieClip {
	private var a_mc:MovieClip;
	private var b_mc:MovieClip;
	private var target_mc:MovieClip; // 存放被控制的影片剪辑
	private var shadowDegree:Number = 0;
	private var mousePressed:Boolean = false;
	private var inner:Boolean = false;
	private var knockout:Boolean = false;
	private var hideObject:Boolean = false;
	//
	public function Controller() {
		buildUI();
	}
	//
	public function setTarget(mc:MovieClip):Void {
		target_mc = mc;
		adjustShadow();
	}
	//
	private function buildUI():Void {
		var me:MovieClip = this;
		var radian:Number; 			// 储存弧度
		var degree:Number;			// 储存角度
		var diffDegree:Number; 		// 储存角度差
		var rotation:Number; 		// 记录既有旋转角度的变量
		var initRotation:Number;	// 存放旋转钮的初始旋转角度
		var initDegree:Number; 		// 存放鼠标的初始角度
		var setInit:Boolean = false;
		// 插入一个复选框
		var knock_cb:CheckBox = me.createClassObject(CheckBox, "knock", 1);
		knock_cb.label = "去底色";
		// 设定复选框的坐标
		knock_cb.move(this._x + 3,this._y+this._height+10);
		// 复选框的事件处理程序
		knock_cb.addEventListener("click",toggleKnockOut);
		function toggleKnockOut(event:Object):Void {
			me.knockout = event.target.selected;
			me.adjustShadow();
		}
		a_mc.onPress = function() {
			// 用户按下鼠标了…
			mousePressed = true;
		};
		a_mc.onRelease = released;
		a_mc.onReleaseOutside = released;
		function released() {
			mousePressed = false;
			// 记录是否已储存初始角度值的变量
			setInit = false;
		}
		a_mc.onMouseMove = function() {
			// 只有按钮在旋转钮影片内被按下时,旋钮才有作用
			if (mousePressed) {
				radian = Math.atan2(this._ymouse, this._xmouse);
				degree = radian*(180/Math.PI);
				// 记录初始角度。
				// 底下的条件程序,仅在用户按着鼠标并移动的期间内执行一次
				if (!setInit) {
					initRotation = this.b_mc._rotation;
					initDegree = degree;
					setInit = true;
				} 
				// 计算移动的角度量  
				diffDegree = degree-initDegree;
				// 旋转角度 = 原有的角度 + 移动的角度量
				rotation = initRotation+diffDegree;
				// 让角度在0~359之间变化,这个判断条件可有可无
				if (rotation<0) {
					rotation += 360;
				}
				this.b_mc._rotation = rotation;
				// 调整对象的阴影角度
				me.shadowDegree = rotation;
				// 呼叫这个影片剪辑实例的自订函数
				me.adjustShadow();
				//
				this.degree_txt.text = Math.floor(rotation);
			}
		};
	}
	// 设定阴影的角度
	private function adjustShadow():Void {
		var distance:Number = 20;
		// 阴影的偏移距离默认为4.0
		var color:Number = 0x000000;
		// 阴影的色彩,格式为0xRRGGBB 
		var alpha:Number = .5;
		// 阴影的透明度,有效值为0.0~1.0,例如,0.5是50%透明度
		var blurX:Number = 16;
		// 水平方向的模糊值,有效值为0~255.0,默认为4.0
		var blurY:Number = 16;
		// 垂直方向的模糊值。
		var strength:Number = 1;
		// 作用强度,有效值为0~255.0,为1.0
		var quality:Number = 1;
		// 套用此滤镜的次数,有效值为0~15,一般采用1(低质量)~3(高质量)之间的数字,数字越低,处理器的负担就越轻
		var filter:DropShadowFilter = new DropShadowFilter(distance, shadowDegree, color, alpha, blurX, blurY, strength, quality, inner, knockout, hideObject);
		var filterArray:Array = new Array();
		filterArray.push(filter);
		//
		if (target_mc != null) {
			target_mc.filters = filterArray;
		} else {
			trace("没有指定被控制的影片剪辑实例,\n"+"请使用setTarget()方法设定。\n");
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -