📄 specialpropertiesdefault.as
字号:
* @param p_obj Object Sound object
* @param p_value Number New volume
*/
public static function _sound_volume_set (p_obj:Object, p_value:Number):void {
var sndTransform:SoundTransform = p_obj.soundTransform;
sndTransform.volume = p_value;
p_obj.soundTransform = sndTransform;
}
// ----------------------------------------------------------------------------------------------------------------------------------
// _sound_pan
/**
* Returns the current sound pan
*
* @param p_obj Object Sound object
* @return Number The current pan
*/
public static function _sound_pan_get (p_obj:Object):Number {
return p_obj.soundTransform.pan;
}
/**
* Sets the sound volume
*
* @param p_obj Object Sound object
* @param p_value Number New pan
*/
public static function _sound_pan_set (p_obj:Object, p_value:Number):void {
var sndTransform:SoundTransform = p_obj.soundTransform;
sndTransform.pan = p_value;
p_obj.soundTransform = sndTransform;
}
// ----------------------------------------------------------------------------------------------------------------------------------
// _color_*
/**
* _color_*
* Generic function for the ra/rb/ga/gb/ba/bb/aa/ab components of the colorTransform object
*/
public static function _color_property_get (p_obj:Object, p_parameters:Array):Number {
return p_obj.transform.colorTransform[p_parameters[0]];
}
public static function _color_property_set (p_obj:Object, p_value:Number, p_parameters:Array):void {
var tf:ColorTransform = p_obj.transform.colorTransform;
tf[p_parameters[0]] = p_value;
p_obj.transform.colorTransform = tf;
}
// ----------------------------------------------------------------------------------------------------------------------------------
// _autoAlpha
/**
* Returns the current alpha
*
* @param p_obj Object MovieClip or Textfield object
* @return Number The current alpha
*/
public static function _autoAlpha_get (p_obj:Object):Number {
return p_obj.alpha;
}
/**
* Sets the current autoAlpha
*
* @param p_obj Object MovieClip or Textfield object
* @param p_value Number New alpha
*/
public static function _autoAlpha_set (p_obj:Object, p_value:Number):void {
p_obj.alpha = p_value;
p_obj.visible = p_value > 0;
}
// ----------------------------------------------------------------------------------------------------------------------------------
// filters
/**
* (filters)
* Generic function for the properties of filter objects
*/
public static function _filter_property_get (p_obj:Object, p_parameters:Array):Number {
var f:Array = p_obj.filters;
var i:uint;
var filterClass:Object = p_parameters[0];
var propertyName:String = p_parameters[1];
for (i = 0; i < f.length; i++) {
if (f[i] is BlurFilter && filterClass == BlurFilter) return (f[i][propertyName]);
}
// No value found for this property - no filter instance found using this class!
// Must return default desired values
var defaultValues:Object;
switch (filterClass) {
case BlurFilter:
defaultValues = {blurX:0, blurY:0, quality:NaN};
break;
}
// When returning NaN, the Tweener engine sets the starting value as being the same as the final value
// When returning null, the Tweener engine doesn't tween it at all, just setting it to the final value
return defaultValues[propertyName];
}
public static function _filter_property_set (p_obj:Object, p_value:Number, p_parameters:Array): void {
var f:Array = p_obj.filters;
var i:uint;
var filterClass:Object = p_parameters[0];
var propertyName:String = p_parameters[1];
for (i = 0; i < f.length; i++) {
if (f[i] is BlurFilter && filterClass == BlurFilter) {
f[i][propertyName] = p_value;
p_obj.filters = f;
return;
}
}
// The correct filter class wasn't found - create a new one
if (f == null) f = new Array();
var fi:BitmapFilter;
switch (filterClass) {
case BlurFilter:
fi = new BlurFilter(0, 0);
break;
}
fi[propertyName] = p_value;
f.push(fi);
p_obj.filters = f;
}
// ==================================================================================================================================
// SPECIAL PROPERTY MODIFIER functions ----------------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------------------------------------------------
// _bezier
/**
* Given the parameter object passed to this special property, return an array listing the properties that should be modified, and their parameters
*
* @param p_obj Object Parameter passed to this property
* @return Array Array listing name and parameter of each property
*/
public static function _bezier_modifier (p_obj:*):Array {
var mList:Array = []; // List of properties to be modified
var pList:Array; // List of parameters passed, normalized as an array
if (p_obj is Array) {
// Complex
pList = p_obj;
} else {
pList = [p_obj];
}
var i:uint;
var istr:String;
var mListObj:Object = {}; // Object describing each property name and parameter
for (i = 0; i < pList.length; i++) {
for (istr in pList[i]) {
if (mListObj[istr] == undefined) mListObj[istr] = [];
mListObj[istr].push(pList[i][istr]);
}
}
for (istr in mListObj) {
mList.push({name:istr, parameters:mListObj[istr]});
}
return mList;
}
/**
* Given tweening specifications (beging, end, t), applies the property parameter to it, returning new t
*
* @param b Number Beginning value of the property
* @param e Number Ending (desired) value of the property
* @param t Number Current t of this tweening (0-1), after applying the easing equation
* @param p Array Array of parameters passed to this specific property
* @return Number New t, with the p parameters applied to it
*/
public static function _bezier_get (b:Number, e:Number, t:Number, p:Array):Number {
// This is based on Robert Penner's code
if (p.length == 1) {
// Simple curve with just one bezier control point
return b + t*(2*(1-t)*(p[0]-b) + t*(e - b));
} else {
// Array of bezier control points, must find the point between each pair of bezier points
var ip:uint = Math.floor(t * p.length); // Position on the bezier list
var it:Number = (t - (ip * (1 / p.length))) * p.length; // t inside this ip
var p1:Number, p2:Number;
if (ip == 0) {
// First part: belongs to the first control point, find second midpoint
p1 = b;
p2 = (p[0]+p[1])/2;
} else if (ip == p.length - 1) {
// Last part: belongs to the last control point, find first midpoint
p1 = (p[ip-1]+p[ip])/2;
p2 = e;
} else {
// Any middle part: find both midpoints
p1 = (p[ip-1]+p[ip])/2;
p2 = (p[ip]+p[ip+1])/2;
}
return p1+it*(2*(1-it)*(p[ip]-p1) + it*(p2 - p1));
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -