📄 controller.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 + -