📄 formlistmenu.as
字号:
import flash.geom.Rectangle;
//***************************import FormatText class**************************
import pssclasses.*;
//*****************************FormListMenu**************************
import pssclasses.form.*;
class FormListMenu extends MovieClip {
// **********define attributes*************
private var __this:MovieClip;
private var defSize:Number = 150;
private var listAutoSize:Boolean = false;
private var isOpen:Boolean = false;
private var newListValue:Object;
private var ListValueArray:Array;
private var NewListValueObj:Object;
private static var ListMenuInActiv:MovieClip;
private var myType:String;
// list values holder
private var ListValuesHolder:MovieClip;
// movie inside
private var listField_mc:MovieClip;
// in listField_mc
private var centerC_mc:MovieClip;
private var leftP_mc:MovieClip;
private var center_mc:MovieClip;
// list button
private var listBut_mc:MovieClip;
//inside list button
private var press_mc:MovieClip;
private var DESABLE:Boolean = true;
//***************content Rectangle mask****************
private var contentMask:Rectangle;
//*****end******content Rectangle mask****************
// label value
private var labelValue:String = "Sonettic SlideShow";
private var menuValue:Object;
private var defValue:Object;
// field with menu description
private var DescTop_txt:TextField;
private var DescBot_txt:TextField;
// number list menu
private var StartNumber:Number;
private var FinishNumber:Number;
private var StepNumber:Number;
//***********define metods***************
private function FormListMenu() {
__this = this;
__this.cacheAsBitmap = true;
}
public function desable(des:Boolean):Void {
DESABLE = des;
labelValue = _global.skeen;
}
//****************load xml*****************
public function initListMenu(xmlPath:String):Void {
var THIS:MovieClip = __this;
var ValuesChildLength:Number;
var ChildLength:Number;
var ValuesXML:XML = new XML();
var valuesListArray:Array = new Array();
var valueNode:XMLNode;
ValuesXML.ignoreWhite = true;
ValuesXML.onLoad = function(success:Boolean) {
ChildLength = ValuesXML.firstChild.childNodes.length;
for (var chil = 0; chil<ChildLength; chil++) {
var values_obj:Object = new Object();
ValuesChildLength = ValuesXML.firstChild.childNodes[chil].childNodes.length;
for (var tags = 0; tags<ValuesChildLength; tags++) {
valueNode = ValuesXML.firstChild.childNodes[chil].childNodes[tags];
values_obj[valueNode.nodeName] = valueNode.firstChild.nodeValue;
}
valuesListArray[chil] = values_obj;
}
// set array with values
THIS.setValuesArray(valuesListArray);
//build component
THIS.buildComponent();
// events
THIS.setEvents();
};
ValuesXML.load(xmlPath);
}
//**************************INIT NUMBER list MENU********
public function initNumberListMenu(startN:Number, finishN:Number, step:Number) {
StartNumber = startN;
FinishNumber = finishN;
StepNumber = step;
var valuesListArray:Array = new Array();
var inset:Boolean = true;
for (var i = StartNumber; i<=FinishNumber; i += StepNumber) {
var valueObject:Object = new Object();
if (i>=60 && inset) {
StepNumber = 20;
inset = false;
}
valueObject.name = i+" sec.";
valueObject.value = i;
valuesListArray.push(valueObject);
}
// set array with values
setValuesArray(valuesListArray);
//build component
buildComponent();
// events
setEvents();
}
//***************build list menu**************
private function buildComponent():Void {
listField_mc = __this.attachMovie("formListField", "listField_mc", 1);
listBut_mc = __this.attachMovie("formListMenuBut", "listBut_mc", 2);
//**************set data for button and label list****
listField_mc.setComponentHolder(__this);
listField_mc.setComponentButton(listBut_mc);
listField_mc.isLabel(true);
listField_mc.setListSize(defSize);
listField_mc.setListLabel(labelValue);
listBut_mc.setComponentHolder(__this);
listBut_mc.setComponentLabel(listField_mc);
}
//*****************set list menu size*************
public function setListMenuSize(size:Number):Void {
defSize = size;
listField_mc.setListSize(defSize);
listField_mc.setListLabel(labelValue);
}
public function setNewValues(newValues:Object):Void {
NewListValueObj = newValues;
labelValue = NewListValueObj.name;
menuValue = NewListValueObj.value;
listField_mc.setListLabel(labelValue);
closeList();
//set value to PSSsetting
PSSetting.setValue(myType, menuValue);
}
//*********************set type menu*********
public function setType(type:String):Void {
myType = type;
}
public function setDefaultValue(val:Object):Void {
defValue = val;
}
// ******************set values array***********
public function setValuesArray(valArr:Array):Void {
ListValueArray = valArr;
if (defValue == undefined) {
var valuesObj:Object = ListValueArray[0];
setNewValues(valuesObj);
} else {
var count = ListValueArray.length;
for (var i = 0; i<count; i++) {
var valuesObj:Object = ListValueArray[i];
if (valuesObj.value == defValue) {
setNewValues(valuesObj);
break;
}
}
}
}
//********************build list values***********
private function buildValuesList():Void {
ListValuesHolder = __this.createEmptyMovieClip("listValuesHolder_mc", 0);
ListValuesHolder._visible = false;
var newValueField:MovieClip;
var countValues:Number = ListValueArray.length;
var listValuesObj:Object;
var holderPosition:Number;
var offsetPosition:Number = listField_mc._height;
var newPosition:Number = 0;
for (var i = 0; i<countValues; i++) {
listValuesObj = ListValueArray[i];
newValueField = ListValuesHolder.attachMovie("formListField", "formListField"+i, i);
newValueField._y = newPosition-1;
newValueField.setComponentHolder(__this);
newValueField.setListSize(defSize);
newValueField.setFieldValue(listValuesObj);
newValueField.setListLabel(listValuesObj.name);
// set new position
newPosition += offsetPosition-1;
}
ListValuesHolder.cacheAsBitmap = true;
ListValuesHolder._y = 0-ListValuesHolder._height;
createContentMask(defSize+listBut_mc._width, ListValuesHolder._height+offsetPosition);
ListValuesHolder._visible = true;
ListValuesHolder.onEnterFrame = function() {
this._y += Math.round((offsetPosition-this._y)/2);
if (this._y == offsetPosition) {
delete this.onEnterFrame;
}
};
}
//*****************destroy List value**************
private function destroyValuesList():Void {
var hidePosition:Number = 0-ListValuesHolder._height;
ListValuesHolder.onEnterFrame = function() {
this._y += Math.floor((hidePosition-this._y)/2);
if (this._y == hidePosition) {
delete this.onEnterFrame;
delete contentMask;
}
};
}
//***************content Rectangle mask****************
private function createContentMask(_w:Number, _h:Number):Void {
contentMask = new Rectangle(0, 0, _w, _h);
__this.scrollRect = contentMask;
}
private function setContentMaskSize(_w:Number, _h:Number):Void {
contentMask.width = _w;
contentMask.height = _h;
__this.scrollRect = contentMask;
}
//****end********content Rectangle mask****************
//**********************open list************
private function openList():Void {
isOpen = true;
listField_mc.activ();
listBut_mc.activ();
// fields with values
buildValuesList();
// **close list*************
var THIS:MovieClip = __this;
_root.onMouseDown = function():Void {
if (THIS.isOpen && !THIS.hitTest(_root._xmouse, _root._ymouse)) {
THIS.closeList();
}
};
}
private function closeList():Void {
isOpen = false;
listField_mc.pasiv();
listBut_mc.pasiv();
destroyValuesList();
delete _root.onMouseDown;
}
//**********************events****************
private function setEvents():Void {
if (DESABLE) {
var THIS:MovieClip = __this;
listField_mc.onPress = function() {
if (!THIS.isOpen) {
THIS.openList();
} else {
THIS.closeList();
}
};
listBut_mc.onPress = function() {
if (THIS != ListMenuInActiv) {
ListMenuInActiv.closeList();
ListMenuInActiv = THIS;
}
if (!THIS.isOpen) {
THIS.openList();
} else {
THIS.closeList();
}
};
listBut_mc.onReleaseOutside = listField_mc.onReleaseOutside=function ():Void {
THIS.closeList();
};
}
}
//*****************Label field*****************
public function setMenuDescriptionField(top:TextField, bot:TextField):Void {
DescTop_txt = top;
DescBot_txt = bot;
}
//*************end class**********
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -