no commit message

This commit is contained in:
niandeng
2020-09-17 18:40:01 +08:00
parent 4382915d09
commit d957abceaa
283 changed files with 86935 additions and 63 deletions
+273
View File
@@ -0,0 +1,273 @@
package ckaction.style {
import flash.display.Sprite;
import flash.text.TextField;
import ckaction.act.script;
import flash.text.TextFormat;
import flash.display.SimpleButton;
import flash.display.MovieClip;
import flash.utils.ByteArray;
import flash.display.Loader;
import flash.events.Event;
import flash.display.Bitmap;
import flash.events.MouseEvent;
import flash.display.JointStyle;
import flash.display.CapsStyle;
import ckaction.act.des;
public class element {
public static function newSprite(obj: Object = null): Sprite { //建立一个圆角矩形
var con: Object = {
backgroundColor: null, //背景颜色
backgroundAlpha: 0, //背景透明度
border: 0,
borderColor: null, //边框颜色
radius: 0, //圆角弧度
width: 0,
height: 0
};
con = script.mergeObject(con, obj);
//trace(con["width"], con["height"], con["radius"], con["radius"]);
var sprite: Sprite = new Sprite();
if (con["backgroundColor"] != null) {
sprite.graphics.beginFill(con["backgroundColor"], con["backgroundAlpha"]); //背景色,透明度CapsStyle.NONE
}
if (con["borderColor"] != null && con["border"] > 0) {
sprite.graphics.lineStyle(con["border"], con["borderColor"], con["borderAlpha"], true, "normal", CapsStyle.NONE, JointStyle.MITER, 1.414);
}
sprite.graphics.drawRoundRect(0, 0, con["width"], con["height"], con["radius"], con["radius"]);
return sprite;
}
public static function newLine(obj: Object = null): Sprite { //建立直线
var o: Object = {
color: 0x000000, //背景颜色
alpha: 1, //透明度
width: 1,
height: 1
};
o = script.mergeObject(o, obj);
var s: Sprite = new Sprite();
s.graphics.lineStyle(o["height"], o["color"]);
s.graphics.moveTo(0, 0);
s.graphics.lineTo(o["width"], 0);
s.alpha = o["alpha"];
return s;
}
public static function newTriangle(obj: Object = null): Sprite { //画三角
var o: Object = {
width: 0,
height: 0,
backgroundColor: null,
border: 0,
borderColor: null,
alpha: 0
}
o = script.mergeObject(o, obj);
var sprite: Sprite = new Sprite();
if (o["backgroundColor"] != null && o["alpha"]) {
sprite.graphics.beginFill(o["backgroundColor"], o["alpha"]);
}
if (o["borderColor"] != null && o["border"] && o["alpha"]) {
sprite.graphics.lineStyle(o["border"], o["borderColor"], o["alpha"]);
}
sprite.graphics.moveTo(0, 0);
sprite.graphics.lineTo(o["width"], 0);
sprite.graphics.lineTo(o["width"] * 0.5, o["height"]);
sprite.graphics.lineTo(0, 0);
sprite.graphics.endFill();
return sprite;
}
public static function newText(obj: Object = null): TextField { //建立一个简单的文本框
var o: Object = {
text: "",
color: 0xFFFFFF,
size: 14,
font: "Microsoft YaHei,\5FAE\8F6F\96C5\9ED1,微软雅黑",
width: 0,
height: 0,
leading: 0,
alpha: 1,
bold: false,
rightMargin: 0,
leftMargin: 0,
textAlign: "left"
}
o = script.mergeObject(o, obj);
var format: TextFormat = new TextFormat();
format.leading = o["leading"];
format.size = o["size"];
format.font = o["font"];
format.color = o["color"];
format.align = o["textAlign"];
if(o["bold"]==true){
format.bold=o["bold"];
}
var text: TextField = new TextField();
text.defaultTextFormat = format;
text.mouseEnabled = false;
text.text = o["text"];
text.wordWrap = o["width"] > 0 ? true : false;
text.width = o["width"] > 0 ? o["width"] : text.textWidth + 5;
text.height = o["height"] > 0 ? o["height"] : text.textHeight + 5;
text.alpha = o["alpha"];
return text;
}
public static function newButton(obj: Object = null): SimpleButton { //建立一个按钮
var o: Object = {
backgroundAlpha:0.8,
height: 30 ,
alpha: 1 ,
font: "Microsoft YaHei,\5FAE\8F6F\96C5\9ED1,微软雅黑",
padding: 0,
align: "right",
overTextColor: 0xFFFFFF,
textColor: 0xEFEFEF,
border: 0,
bold: false,
overBackgroundColor: 0x444444,
size: 14,
borderColor: 0x333333,
width: 60,
backgroundColor: 0x1A1A1A,
radius: 0,
text:""
}
//script.traceObject(obj);
o = script.mergeObject(o, obj);
//建立背景
var bg: Object = {
backgroundColor: o["backgroundColor"], //背景颜色
backgroundAlpha: o["backgroundAlpha"], //背景透明度
border: o["border"],
borderColor: o["borderColor"], //边框颜色
radius: o["radius"], //圆角弧度
width: o["width"],
height: o["height"]
};
var bgSprite:Sprite=newSprite(bg);
bg["backgroundColor"]=o["overBackgroundColor"]; //背景颜色
var overSprite:Sprite=newSprite(bg);
//文字
var textObj:Object={
text: o["text"],
color: o["textColor"],
size: o["size"],
font: o["font"],
alpha: o["alpha"],
bold: o["bold"]
}
var text:TextField=newText(textObj);
textObj["color"]=o["overTextColor"];
var overText:TextField=newText(textObj);
var tx:int=0;
switch(o["align"]){
case "left":
tx=o["padding"]
break;
case "center":
tx=(bgSprite.width-text.width)*0.5;
break;
case "right":
tx=bgSprite.width-text.width-o["padding"];
break;
}
text.x=tx;
overText.x=tx;
text.y=(bgSprite.height-text.height)*0.5;
overText.y=(bgSprite.height-overText.height)*0.5;
bgSprite.addChild(text);
overSprite.addChild(overText);
var button: SimpleButton = new SimpleButton();
if (o["over"]) {
button.upState = overSprite;
}
else {
button.upState = bgSprite;
}
button.overState = overSprite;
button.hitTestState = overSprite;
button.downState = overSprite;
return button;
}
public static function imgButton(obj: Object = null, name: String = "", imgLoadedFun: Function = null): Sprite { //建立一个以图片为元件的按钮
var o: Object = {
mouseOver: "",
mouseOut: ""
}
o = script.mergeObject(o, obj);
if (!o["mouseOver"] || !o["mouseOut"]) {
return null;
}
var mObj: Object = {
bgAlpha: 0, //背景透明度
width: 1,
height: 1
};
var sp: Sprite = newSprite(mObj);
var over: ByteArray = des.getByteArray(o["mouseOver"]);
var out: ByteArray =des.getByteArray(o["mouseOut"]);
var outBitMap: Bitmap = null,
overBitMap: Bitmap = null;
var loadOut: Loader = new Loader(),
loadOver: Loader = new Loader();
function loadOutImg(): void {
loadOut.loadBytes(out); //读取ByteArray
loadOut.contentLoaderInfo.addEventListener(Event.COMPLETE, function (event: Event) {
outBitMap = event.target.content as Bitmap; //读取Bitmap
sp.addChild(outBitMap);
loadOverImg();
});
}
function loadOverImg(): void {
loadOver.loadBytes(over); //读取ByteArray
loadOver.contentLoaderInfo.addEventListener(Event.COMPLETE, function (event: Event) {
overBitMap = event.target.content as Bitmap; //读取Bitmap
sp.addChild(overBitMap);
overBitMap.visible = false;
addListener();
});
}
function addListener(): void {
sp.addEventListener(MouseEvent.MOUSE_OVER, function (event: MouseEvent) {
overBitMap.visible = true;
});
sp.addEventListener(MouseEvent.MOUSE_OUT, function (event: MouseEvent) {
overBitMap.visible = false;
});
if (imgLoadedFun != null) {
imgLoadedFun();
}
}
loadOutImg();
sp.buttonMode = true;
if (name != "") {
sp.name = name;
}
return sp;
}
public static function imgSprite(img: String = ""): Sprite {
var mObj: Object = {
bgAlpha: 0, //背景透明度
width: 1,
height: 1
};
var sp: Sprite = newSprite(mObj);
var byte: ByteArray = des.getByteArray(img);
var ld: Loader = new Loader();
ld.loadBytes(byte); //读取ByteArray
ld.contentLoaderInfo.addEventListener(Event.COMPLETE, function (event: Event) {
var BitMap: Bitmap = event.target.content as Bitmap; //读取Bitmap
sp.addChild(BitMap);
});
return sp;
}
}
}
File diff suppressed because it is too large Load Diff
+39
View File
@@ -0,0 +1,39 @@
package ckaction.style {
import flash.utils.ByteArray;
import flash.display.Loader;
import flash.events.Event;
import flash.display.Bitmap;
import flash.events.ErrorEvent;
import ckaction.act.des;
public class loadByteImg {
public function loadByteImg(file: String, success: Function,myName:String="") {
// constructor code
//检查file是否需要解密
//
var ld: Loader = new Loader();
try {
var bt: ByteArray = des.getByteArray(file);
ld.loadBytes(bt);
ld.contentLoaderInfo.addEventListener(Event.COMPLETE, function (event: Event) {
if(myName){
ld.name=myName;
}
success(ld);
});
} catch (event:ErrorEvent) {
if(myName){
success(null,myName);
}
else{
success(null);
}
}
}
}
}
+42
View File
@@ -0,0 +1,42 @@
package ckaction.style {
import flash.display.Loader;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.net.URLRequest;
import flash.display.LoaderInfo;
import flash.display.Sprite;
public class loadImg {
private var load: Loader = null;
private var img:String="";
private var successFun: Function = null;
public function loadImg(url:String, success: Function) {
// constructor code
successFun = success;
img = url;
loadimage();
}
private function loadimage(): void {
load = new Loader();
load.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
load.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); //监听加载失败
load.load(new URLRequest(img));
}
private function completeHandler(event: Event): void {
successFun(load);
remove();
}
private function errorHandler(event: IOErrorEvent): void {
remove();
successFun(null);
}
private function remove(): void {
load.removeEventListener(Event.COMPLETE, completeHandler);
load.removeEventListener(IOErrorEvent.IO_ERROR, errorHandler);
load = null;
}
}
}
+38
View File
@@ -0,0 +1,38 @@
package ckaction.style {
import flash.display.Sprite;
import ckaction.player.gifPlayer;
import flash.display.MovieClip;
public class loadSpriteGif {
public static function loadGif(url: String, w: int = 0, h: int = 0,radius:int=0,num:int=12): Sprite {
//trace(url,w,h,radius);
var sprite: Sprite = new Sprite();
var gif:gifPlayer=null;
loadImg();
function loadImg(): void {
gif=new gifPlayer(url,completeHandler)
}
function completeHandler(m:MovieClip): void {
sprite.addChild(m);
var obj:Object={
width:w,
height:h,
radius:radius,
backgroundColor: 0xFFFFFF, //背景颜色
backgroundAlpha: 1 //背景透明度
};
gif.changeWH(w,h);
var maskSprit:Sprite=element.newSprite(obj);
sprite.addChild(maskSprit);
sprite.mask=maskSprit;
}
return sprite;
}
}
}
+63
View File
@@ -0,0 +1,63 @@
package ckaction.style {
/*
软件名称:chplayer
软件作者:http://www.chplayer.com
开源软件协议:Mozilla Public License, version 2.0(MPL 2.0)
MPL 2.0协议英文(原文,正本)查看地址:https://www.mozilla.org/en-US/MPL/2.0/
MPL 2.0协议中文(翻译)查看地址:http://www.chplayer.com/res/Mozilla_Public_License_2.0_Simplified_Chinese_Reference.txt
文件最后更新日期:2017-03-17
*/
import flash.display.Loader;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.net.URLRequest;
import flash.display.LoaderInfo;
import flash.display.Sprite;
public class loadSpriteImg {
public static function loadImg(url: String, w: int = 0, h: int = 0,radius:int=0,num:int=12,lname:String=""): Sprite {
//trace(url,w,h,radius);
var load: Loader = null;
var sprite: Sprite = new Sprite();
loadImg();
function loadImg(): void {
load = new Loader();
load.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
load.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); //监听加载失败
load.load(new URLRequest(url));
}
function completeHandler(event: Event): void {
load.width = w;
load.height = h;
sprite.addChild(load);
if(radius>0){
var spObj:Object={
backgroundColor:"#FFFFFF",
width:w,
height:h,
radius:radius
};
var mSprite:Sprite=element.newSprite(spObj);
sprite.addChild(mSprite);
load.mask=mSprite;
}
load.name=lname!=""?lname:"ele_"+num;
}
function errorHandler(event: IOErrorEvent): void {
//trace("加载失败");
remove();
}
function remove(): void {
load.removeEventListener(Event.COMPLETE, completeHandler);
load.removeEventListener(IOErrorEvent.IO_ERROR, errorHandler);
load = null;
}
return sprite;
}
}
}
+743
View File
@@ -0,0 +1,743 @@
package ckaction.style {
import flash.display.Sprite;
import flash.text.TextField;
import flash.display.Stage;
import fl.transitions.Tween;
import fl.transitions.easing.None;
import fl.motion.easing.Quadratic;
import fl.motion.easing.Cubic;
import fl.motion.easing.Quartic;
import fl.motion.easing.Quintic;
import fl.motion.easing.Sine;
import fl.motion.easing.Exponential;
import fl.motion.easing.Circular;
import fl.motion.easing.Elastic;
import fl.motion.easing.Back;
import fl.motion.easing.Bounce;
import fl.transitions.TweenEvent;
import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.events.Event;
import ckaction.act.script;
import ckaction.style.loadSpriteImg;
import ckaction.C.C;
import com.dynamicflash.util.Base64;
//import ckaction.act.log;
public class newElement {
private var pauseded: Boolean = false;
private var STAGE: Stage = null;
private var THIS: Sprite = null;
private var FLASHVARS: Object = null;
private var list: Array = [];
//private var C:MovieClip=null
private var alt: int = 0;
private var eleArr: Array = [],
eleNameArr: Array = []; //保存所有在改变舞台尺寸时需要调整位置的元件的数组
private var eleTempArr: Array = [],
eleNameTempArr: Array = []; //保存所有在改变舞台尺寸时需要调整位置的元件的数组
private var animateArray: Array = [],
animateElementArray: Array = [],
animatePauseArray: Array = []; //缓动tween数组,缓动的元件ID数组,暂停时需要停止的元件ID数组
public function newElement(stage: Stage, sprite: Sprite, an: int = 0) {
STAGE = stage;
THIS = sprite;
var config: Object = C.CONFIG;
FLASHVARS = config["flashvars"];
alt = an;
//C=cm;
stage.addEventListener(Event.RESIZE, resizeHandler);
}
//当修改了C.CONFIG后
public function changeConfig() {
var config: Object = C.CONFIG;
FLASHVARS = config["flashvars"];
}
public function addelement(newObj): Sprite {
var obj = {
list: [],
x: "100%",
y: "50%",
position: [],
alpha: 1,
backgroundColor: null,
backAlpha: 1,
backRadius: 0,
border: 0,
borderColor: 0x000000,
clickEvent: ""
}
obj = script.mergeObject(obj, newObj);
//new log(obj);
list = obj["list"];
if (list.length == 0) {
return null;
}
var bObj: Object = {};
var elementArr: Array = [];
var i: int = 0;
var ele: Object = {};
var cx: int = 0,
maxH: int = 0;
for (i = 0; i < list.length; i++) {
ele = list[i];
var mH: int = 0;
var eleSprite: Sprite = null;
switch (ele["type"]) {
case "image":
case "png":
case "jpg":
case "jpeg":
case "bmp":
case "swf":
bObj = {
type: "image",
file: "",
radius: 0, //圆角弧度
width: 30, //定义宽,必需要定义
height: 30, //定义高,必需要定义
alpha: 1, //透明度
marginLeft: 0,
marginRight: 0,
marginTop: 0,
marginBottom: 0,
clickEvent: ""
};
list[i] = ele = script.mergeObject(bObj, ele);
eleSprite = loadSpriteImg.loadImg(bObj["file"], bObj["width"], bObj["height"], bObj["radius"], i,bObj["clickEvent"]!=""?Base64.encode(bObj["clickEvent"]):"");
cx += ele["marginLeft"];
eleSprite.x = cx;
cx += (eleSprite.width || ele["width"]) + ele["marginRight"];
mH = ele["marginTop"];
eleSprite.y = mH;
mH += (eleSprite.height || ele["height"]) + ele["marginBottom"];
if (maxH < mH) {
maxH = mH;
}
if (bObj["clickEvent"] != "") {
eleSprite.name=Base64.encode(bObj["clickEvent"]);
eleSprite.buttonMode = true;
eleSprite.addEventListener(MouseEvent.CLICK, mouseClickHandler);
}
elementArr.push(eleSprite);
//eleNameArr.push();
break;
case "gif":
bObj = {
type: "gif",
file: "",
radius: 0, //圆角弧度
width: 30, //定义宽,必需要定义
height: 30, //定义高,必需要定义
alpha: 1, //透明度
marginLeft: 0,
marginRight: 0,
marginTop: 0,
marginBottom: 0,
clickEvent: ""
};
list[i] = ele = script.mergeObject(bObj, ele);
var spObj: Object = {
width: bObj["width"],
height: bObj["height"]
};
eleSprite = loadSpriteGif.loadGif(bObj["file"], bObj["width"], bObj["height"], bObj["radius"], i);
trace("加载");
cx += ele["marginLeft"];
eleSprite.x = cx;
cx += (eleSprite.width || ele["width"]) + ele["marginRight"];
mH = ele["marginTop"];
eleSprite.y = mH;
mH += (eleSprite.height || ele["height"]) + ele["marginBottom"];
if (maxH < mH) {
maxH = mH;
}
if (bObj["clickEvent"] != "") {
eleSprite.name=Base64.encode(bObj["clickEvent"]);
eleSprite.buttonMode = true;
eleSprite.addEventListener(MouseEvent.CLICK, mouseClickHandler);
}
elementArr.push(eleSprite);
//eleNameArr.push();
break;
case "text":
bObj = {
type: "text", //说明是文本
text: "", //文本内容
color: 0xFFFFFF,
size: 14,
font: "Microsoft YaHei,\5FAE\8F6F\96C5\9ED1,微软雅黑",
leading: 0,
alpha: 1, //透明度
bold: false,
paddingLeft: 0, //左边距离
paddingRight: 0, //右边距离
paddingTop: 0,
paddingBottom: 0,
marginLeft: 0,
marginRight: 0,
marginTop: 0,
marginBottom: 0,
backgroundColor: null,
backAlpha: 1,
backRadius: 0,
border: 0,
borderColor: 0x000000
};
list[i] = ele = script.mergeObject(bObj, ele);
var textObj: Object = {
text: bObj["text"],
color: bObj["color"],
size: bObj["size"],
font: bObj["font"],
bold: bObj["bold"],
width: 0,
height: 0,
alpha: bObj["alpha"]
};
var text: TextField = element.newText(textObj);
var textBgWidth: int = text.width + bObj["paddingLeft"] + bObj["paddingRight"];
var textBgHeight: int = bObj["leading"] > 0 ? bObj["leading"] : 0;
text.y = textBgHeight > 0 ? (textBgHeight - text.height) * 0.5 + bObj["paddingTop"] : bObj["paddingTop"];
textBgHeight += (bObj["paddingTop"] + bObj["paddingBottom"]);
text.x = bObj["paddingLeft"];
var textBgObj: Object = {
backgroundColor: bObj["backgroundColor"], //背景颜色
radius: bObj["backRadius"], //圆角弧度
backgroundAlpha: bObj["backAlpha"], //背景透明度
border: bObj["border"],
borderColor: bObj["borderColor"],
width: textBgWidth,
height: textBgHeight
};
eleSprite = element.newSprite(textBgObj);
eleSprite.addChild(text);
//eleSprite.name = "ele_" + i;
cx += ele["marginLeft"];
eleSprite.x = cx;
cx += eleSprite.width + ele["marginRight"];
mH = ele["marginTop"];
eleSprite.y = mH;
mH += eleSprite.height + ele["marginBottom"];
if (maxH < mH) {
maxH = mH;
}
elementArr.push(eleSprite);
if (bObj["clickEvent"] != "" && (obj["clickEvent"] == "" || obj["clickEvent"] == null) && bObj["clickEvent"] != null) {
eleSprite.name=Base64.encode(bObj["clickEvent"]);
eleSprite.buttonMode = true;
eleSprite.addEventListener(MouseEvent.CLICK, mouseClickHandler);
}
break;
default:
break;
}
}
var spBgObj: Object = {
backgroundColor: obj["backgroundColor"] != null ? obj["backgroundColor"] : null, //背景颜色
radius: obj["backRadius"], //圆角弧度
backgroundAlpha: obj["backAlpha"], //背景透明度
border: obj["border"],
borderColor: obj["borderColor"],
width: cx,
height: maxH
};
var sprite: Sprite = element.newSprite(spBgObj);
for (i = 0; i < elementArr.length; i++) {
sprite.addChild(elementArr[i]);
}
sprite.name = obj["x"] + "$" + obj["y"] + "$" + obj["position"].join(",") + "$" + script.randomString();
var eleCoor: Object = calculationCoor(sprite);
sprite.x = eleCoor["x"];
sprite.y = eleCoor["y"];
sprite.alpha = obj["alpha"];
THIS.addChildAt(sprite, alt + 1);
eleArr.push(sprite);
eleNameArr.push(sprite.name);
if (obj["clickEvent"] != "") {
sprite.buttonMode = true;
sprite.addEventListener(MouseEvent.CLICK, function (event: MouseEvent): void {
THIS["clickEvent"](obj["clickEvent"]);
});
}
return sprite;
}
private function mouseClickHandler(event: MouseEvent): void {
//new log(event.target.name);
var ce: String = Base64.decode(event.target.name);
//new log(ce);
THIS["clickEvent"](ce);
}
private function calculationCoor(ele: Sprite): Object {
var arr = ele.name.split("$");
var obj = {
x: arr[0],
y: arr[1],
position: arr[2] != "" ? arr[2].split(",") : []
}
var x: int = Number(obj["x"].toString().split("%").join("")),
y: int = Number(obj["y"].toString().split("%").join("")),
position: Array = obj["position"];
var w: int = STAGE.stageWidth,
h: int = STAGE.stageHeight;
var ew: int = ele.width,
eh: int = ele.height;
if (position.length > 0) {
position.push(null, null, null, null);
var i = 0;
for (i = 0; i < position.length; i++) {
if (position[i] == "null" || position[i] == "") {
position[i] = null;
}
if (position[i] != null) {
position[i] = Number(position[i]);
}
}
if (position[2] == null) {
switch (position[0]) {
case 0:
x = 0;
break;
case 1:
x = (w - ew) * 0.5;
break;
default:
x = w - ew;
break;
}
} else {
switch (position[0]) {
case 0:
x = position[2];
break;
case 1:
x = w * 0.5 + position[2];
break;
default:
x = w + position[2];
break;
}
}
if (position[3] == null) {
switch (position[1]) {
case 0:
y = 0;
break;
case 1:
y = (h - eh) * 0.5;
break;
default:
y = h - eh;
break;
}
} else {
switch (position[1]) {
case 0:
y = position[3];
break;
case 1:
y = h * 0.5 + position[3];
break;
default:
y = h + position[3];
break;
}
}
} else {
if (obj["x"].toString().search("%") > -1) {
x = Math.floor(Number(obj["x"].toString().split("%").join("")) * w * 0.01);
}
if (obj["y"].toString().search("%") > -1) {
y = Math.floor(Number(obj["y"].toString().split("%").join("")) * h * 0.01);
}
}
return {
x: x,
y: y
}
}
public function getElement(name: String): Object {
var num: int = eleNameArr.indexOf(name);
var sprite: Sprite =null
if (num > -1) {
sprite = eleArr[num];
return {
x: sprite.x,
y: sprite.y,
width: sprite.width,
height: sprite.height,
alpha: sprite.alpha
}
}
num = eleNameTempArr.indexOf(name);
if (num > -1) {
sprite = eleTempArr[num];
return {
x: sprite.x,
y: sprite.y,
width: sprite.width,
height: sprite.height,
alpha: sprite.alpha,
show:sprite.visible
}
}
return null;
}
public function elementShow(name: String="",bn:Boolean=true):void{
if(name==""){
var i:int=0;
for(i=0;i<eleNameTempArr.length;i++){
eleTempArr[i].visible=bn;
}
return;
}
var num: int = eleNameArr.indexOf(name);
if (num > -1) {
eleArr[num].visible=bn;
}
num = eleNameTempArr.indexOf(name);
if (num > -1) {
eleTempArr[num].visible=bn;
}
}
public function animate(ob: Object): String {
var obj: Object = {
element: null,
parameter: "x",
static: false,
effect: "None.easeIn",
start: null,
end: null,
speed: 0,
overStop: false,
pauseStop: false,
callBack: null
};
obj = script.mergeObject(obj, ob);
if (obj["element"] == null || obj["speed"] == 0) {
return "";
}
var w: int = STAGE.stageWidth,
h: int = STAGE.stageHeight;
var eleCoor = {
x: 0,
y: 0
};
var run: Boolean = true;
var pm = getElement(obj["element"]); //包含x,y,width,height,alpha属性
//将该元件从元件数组里删除,让其不再跟随播放器的尺寸改变而改变位置
var num = eleNameArr.indexOf(obj["element"]);
var sprite: Sprite = null;
if (num > -1) {
sprite = eleArr[num];
eleNameArr.splice(num, 1);
eleArr.splice(num, 1);
eleTempArr.push(sprite);
eleNameTempArr.push(obj["element"]);
}
if (sprite == null) {
return "";
}
var b: Number = 0; //初始值
var c: Number = 0; //变化后的值
var d = obj["speed"]; //持续时间
//var setTimeOut = null;
//var tweenObj = null;
var start: String = obj["start"] == null ? "" : obj["start"].toString();
var end: String = obj["end"] == null ? "" : obj["end"].toString();
switch (obj["parameter"]) {
case "x":
if (obj["start"] == null) {
b = pm["x"];
} else {
if (start.substr(start.length - 1, start.length) == "%") {
b = Number(start.substr(0, start.length - 1)) * w * 0.01;
} else {
b = Number(start);
}
}
if (obj["end"] == null) {
c = pm["x"];
} else {
if (end.substr(end.length - 1, end.length) == "%") {
c = Number(end.substr(0, end.length - 1)) * w * 0.01;
} else if (end.substr(0, 1) == "-" || end.substring(0, 1) == "+") {
if (typeof (obj["end"]) == "number") {
c = obj["end"];
} else {
c = b + Number(end);
}
} else {
c = Number(end);
}
}
b = Math.floor(b);
c = Math.floor(c);
break;
case "y":
if (obj["start"] == null) {
b = pm["y"];
} else {
if (start.substr(start.length - 1, start.length) == "%") {
b = Number(start.substr(0, start.length - 1)) * h * 0.01;
} else {
b = Number(start);
}
}
if (obj["end"] == null) {
c = pm["y"];
} else {
if (end.substr(end.length - 1, end.length) == "%") {
c = Number(end.substr(0, end.length - 1)) * h * 0.01;
} else if (end.substr(0, 1) == "-" || end.substring(0, 1) == "+") {
if (typeof (obj["end"]) == "number") {
c = obj["end"];
} else {
c = b + Number(end);
}
} else {
c = Number(end);
}
}
b = Math.floor(b);
c = Math.floor(c);
break;
case "alpha":
if (obj["start"] == null) {
b = pm["alpha"];
} else {
if (start.substr(start.length - 1, start.length) == "%") {
b = Number(start.substr(0, start.length - 1));
} else {
b = Number(obj["start"]);
}
}
if (obj["end"] == null) {
c = pm["alpha"];
} else {
if (end.substr(end.length - 1, end.length) == "%") {
c = Number(end.substr(0, end.length - 1));
} else if (end.substr(0, 1) == "-" || end.substring(0, 1) == "+") {
if (typeof (obj["end"]) == "number") {
c = obj["end"];
} else {
c = b + Number(end);
}
} else {
c = Number(end);
}
}
break;
}
var effArr: Array = [None, Quadratic, Cubic, Quartic, Quintic, Sine, Exponential, Circular, Elastic, Back, Bounce];
var effNameArr: Array = ["None", "Quadratic", "Cubic", "Quartic", "Quintic", "Sine", "Exponential", "Circular", "Elastic", "Back", "Bounce"];
var arr: Array = obj["effect"].split(".");
num = effNameArr.indexOf(arr[0]);
var effectFun = effArr[num][arr[1]];
var tween: Tween = new Tween(sprite, obj["parameter"], effectFun, b, c, d, true);
if (obj["static"]) {
function changeHandler(event: TweenEvent) {
var coor = calculationCoor(sprite);
switch (obj["parameter"]) {
case "x":
sprite.y = coor["y"];
break;
case "y":
sprite.x = coor["x"];
break;
case "alpha":
sprite.x = coor["x"];
sprite.y = coor["y"];
break;
}
};
tween.addEventListener(TweenEvent.MOTION_CHANGE, changeHandler);
}
function backCall(): void {
//trace("=====================================backcall");
var numT:int = eleNameTempArr.indexOf(sprite.name);
if (numT > -1) {
eleNameTempArr.splice(numT, 1);
eleTempArr.splice(numT, 1);
}
eleNameArr.push(sprite.name);
eleArr.push(sprite);
tween.removeEventListener(TweenEvent.MOTION_FINISH, finishHandler);
tween = null;
if (obj["callBack"] != null && typeof (obj["callBack"]) == "string") {
script.callJs(obj["callBack"], sprite.name);
}
}
function finishHandler(event: TweenEvent): void {
switch (obj["parameter"]) {
case "x":
if (sprite.x != c) {
tween.resume();
} else {
backCall();
}
break;
case "y":
if (sprite.y != c) {
tween.resume();
} else {
backCall();
}
break;
case "alpha":
if (sprite.alpha != c) {
tween.resume();
} else {
backCall();
}
break;
}
}
tween.addEventListener(TweenEvent.MOTION_FINISH, finishHandler);
if (obj["overStop"]) {
function overHandler(event: MouseEvent) {
tween.stop();
sprite.removeEventListener(MouseEvent.MOUSE_OVER, overHandler);
sprite.addEventListener(MouseEvent.MOUSE_OUT, outHandler);
};
function outHandler(event: MouseEvent) {
var start = true;
if (obj["pauseStop"] && pauseded) {
start = false;
}
if (start) {
tween.resume();
}
sprite.removeEventListener(MouseEvent.MOUSE_OUT, outHandler);
sprite.addEventListener(MouseEvent.MOUSE_OVER, overHandler);
};
sprite.addEventListener(MouseEvent.MOUSE_OVER, overHandler);
}
tween.start();
var animateId = "animate" + script.randomString();
animateArray.push(tween);
animateElementArray.push(animateId);
if (obj["pauseStop"]) {
animatePauseArray.push(animateId);
}
return animateId;
}
/*
接口函数
继续运行animate
*/
public function animateResume(id: String = "") {
var arr: Array = [];
if (id != "" && id != "undefined" && id != "pause") {
arr.push(id);
} else {
if (id === "pause") {
arr = animatePauseArray;
} else {
arr = animateElementArray;
}
}
for (var i: int = 0; i < arr.length; i++) {
var index: int = animateElementArray.indexOf(arr[i]);
if (index > -1) {
animateArray[index].resume();
}
}
}
/*
接口函数
暂停运行animate
*/
public function animatePause(id: String = "") {
var arr: Array = [];
if (id != "" && id != "undefined" && id != "pause") {
arr.push(id);
} else {
if (id === "pause") {
arr = animatePauseArray;
} else {
arr = animateElementArray;
}
}
for (var i: int = 0; i < arr.length; i++) {
var index: int = animateElementArray.indexOf(arr[i]);
if (index > -1) {
animateArray[index].stop();
}
}
}
/*
内置函数
根据元件删除数组里对应的内容
*/
public function deleteAnimate(id:String) {
var index = animateElementArray.indexOf(id);
if (index > -1) {
//animatePause(id);
animateArray[index].fforward();
//animateArray.splice(index, 1);
//animateElementArray.splice(index, 1);
}
}
/*
内置函数
删除外部新建的元件
*/
public function deleteElement(name: String): void {
trace(name);
trace(eleNameArr);
var num: int = eleNameArr.indexOf(name);
if (num > -1) {
THIS.removeChild(eleArr[num]);
eleNameArr.splice(num, 1);
eleArr.splice(num, 1);
}
deleteAnimate(name);
}
public function changePauseded(b: Boolean): void {
pauseded = b;
if (animatePauseArray.length == 0) {
return;
}
if (b) {
animatePause("pause");
} else {
animateResume("pause");
}
}
public function resizeHandler(event: Event): void {
if (eleArr.length > 0) {
for (var i: int = 0; i < eleArr.length; i++) {
var coor: Object = calculationCoor(eleArr[i]);
eleArr[i].x = coor["x"];
eleArr[i].y = coor["y"];
}
}
}
}
}
+124
View File
@@ -0,0 +1,124 @@
package ckaction.style {
/*
软件名称:ckplayer
软件作者:http://www.chplayer.com
开源软件协议:Mozilla Public License, version 2.0(MPL 2.0)
MPL 2.0协议英文(原文,正本)查看地址:https://www.mozilla.org/en-US/MPL/2.0/
MPL 2.0协议中文(翻译)查看地址:http://www.chplayer.com/res/Mozilla_Public_License_2.0_Simplified_Chinese_Reference.txt
文件最后更新日期:2017-04-07
*/
import flash.display.Loader;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.net.URLRequest;
import flash.display.LoaderInfo;
import flash.utils.ByteArray;
import flash.display.Bitmap;
import flash.net.URLLoader;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;
import flash.display.Sprite;
import ckaction.act.des;
public class newPreview {
private var load: Loader = null;
private var imgArr: Array = [];
private var com: Function = null;
private var imageI: int = 0; //加载图片时计数,一张一张图片加载
private var bytemapArr: Array = [];
private var imgW:int=0,imgH:int=0;
public function newPreview(img: Array, k: Function) {
// constructor code
com = k;
imgArr = img;
loadimage();
}
private function loadimage(): void {
var s:String=imgArr[imageI];
load = new Loader();
load.contentLoaderInfo.addEventListener(Event.COMPLETE, comLoad);
load.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorLoad); //监听加载失败
if(s.substr(0,10)=="data:image" || s.substr(0,3)=="CK:" || s.substr(0,3)=="CE:"){
var bt: ByteArray = des.getByteArray(s);
load.loadBytes(bt);
}
else{
load.load(new URLRequest(s));
}
}
private function comLoad(event: Event): void {
var o: LoaderInfo = load.contentLoaderInfo;
var bitmapdata: BitmapData
var bytearr: ByteArray = new ByteArray();
var bytemap: Bitmap = new Bitmap();
imgW=o.width*0.1;
imgH=o.height*0.1;
bitmapdata = new BitmapData(o.width, o.height);
bitmapdata.draw(load);
var temp: ByteArray = bitmapdata.getPixels(bitmapdata.rect);
bytearr.writeBytes(temp);
var bitmapdata2: BitmapData = new BitmapData(o.width, o.height);
bytearr.position = 0;
bitmapdata2.setPixels(bitmapdata.rect, bytearr);
//bytemap.bitmapData = bitmapdata2;
bytemapArr.push(bitmapdata2);
//com(bytemap);
remove();
if (imageI < imgArr.length - 1) {
imageI++;
loadimage();
}
else {
rectAngle(); //全部加载完进行切图
}
}
private function rectAngle(): void {
var mov:Sprite = new Sprite();
var nx: int = 0; //新的X坐标
//
for (var i: int = 0; i < bytemapArr.length; i++) {
var bm: BitmapData = bytemapArr[i];
var bx: int = 0,
by: int = 0; //定义要切的x,y
for (var y: int = 0; y < 100; y++) {
var picRect: Rectangle = new Rectangle(bx, by, imgW, imgH); //从哪里开始扣,扣多少?
var point: Point = new Point(0, 0); //将抠图放在newBitmapdata的那个位置
var newBitmapdata: BitmapData = new BitmapData(imgW, imgH);
newBitmapdata.copyPixels(bm, picRect, point);
var newmap: Bitmap = new Bitmap();
newmap.bitmapData = newBitmapdata;
var newc: Sprite = new Sprite();
newc.addChild(newmap);
newc.x = nx;
newc.name = i + ":" + y + "";
mov.addChild(newc);
nx += imgW;
bx += imgW;
if (bx >= bm.width) {
bx = 0;
by += imgH;
}
}
}
com(mov);
}
private function errorLoad(event: IOErrorEvent): void {
remove();
}
private function remove(): void {
load.removeEventListener(Event.COMPLETE, comLoad);
load.removeEventListener(IOErrorEvent.IO_ERROR, errorLoad);
load = null;
}
}
}
+102
View File
@@ -0,0 +1,102 @@
package ckaction.style {
import flash.display.Loader;
import flash.display.Stage;
import flash.display.Sprite;
import flash.events.Event;
import ckaction.act.script;
import flash.events.MouseEvent;
import ckaction.act.log;
public class poster {
private var STAGE: Stage = null;
private var THIS: Sprite = null,
VPLAY:Function = null,
GETCONTROLBARSHOW:Function=null;
private var loadIndex:int=0;
private var loadHandler: Function = null; //调用主控制台的into
private var VIDEO: Object = null;
private var picUrl: String = "";
private var image: Loader = null;
private var imageW: int = 0,imageH: int = 0;
private var isLoad:Boolean=true;
public function poster(stage: Stage, sprite: Sprite, vplay:Function,getControlBarShow:Function, loadFun: Function) {
// constructor code
STAGE = stage;
THIS = sprite;
VPLAY = vplay;
GETCONTROLBARSHOW=getControlBarShow
loadHandler = loadFun;
stage.addEventListener(Event.RESIZE, resizeHandler);
}
public function loadPoster(pic: String, video: Object,index:int=0): void {
VIDEO = video;
picUrl = pic;
loadIndex=index;
if (image) {
THIS.removeChild(image);
image = null;
} else {
if(isLoad){
new loadImg(pic, loaderHandler);
}
}
}
private function loaderHandler(load: Loader = null): void {
if(!isLoad){
return;
}
if (load) {
image = load;
imageW = image.width;
imageH = image.height;
THIS.addChildAt(image, loadIndex);
image.addEventListener(MouseEvent.CLICK,function(event:MouseEvent){
VPLAY();
});
imageResize();
loadHandler(true);
} else {
loadHandler(false);
}
}
private function imageResize(): void {
if (image) {
var obj: Object ={};
if(GETCONTROLBARSHOW()){
obj=VIDEO["reserve"];
}
else{
obj=VIDEO["controlBarHideReserve"];
}
obj["stageW"]=STAGE.stageWidth;
obj["stageH"]=STAGE.stageHeight;
obj["eleW"]=imageW;
obj["eleH"]=imageH;
var coor:Object=script.getCoor(obj);
image.x=coor["x"];
image.y=coor["y"];
image.width=coor["width"];
image.height=coor["height"];
}
}
private function resizeHandler(event: Event): void {
if (image) {
imageResize();
}
}
public function hide():void{
//接收外部通知,隐藏卸载掉封面图
new log("process:Poster hide")
isLoad=false;
if (image) {
THIS.removeChild(image);
image = null;
}
}
}
}
+220
View File
@@ -0,0 +1,220 @@
package ckaction.style {
import flash.display.Sprite;
import ckaction.act.loadXml;
import ckaction.act.script;
public class track {
private var THIS: Sprite = null;
private var CFIG: Object = {};
private var trackList: Array = [];
private var trackIndex: int = 0;
private var trackDelay:Number=0;
private var nowTrackShow: Object = {
sn: ""
};
private var trackElement: Array = [];
private var time: Number = 0;
private var isClose: Boolean = false;
public function track(sp: Sprite, config: Object, file: String = "",trackD:Number=0) {
if (!file) {
return;
}
THIS = sp;
CFIG = config;
trackDelay=trackD;
new loadXml(file, function (data: String) {
if (isClose) {
return;
} else {
if (data) {
//trace(data);
trackList = parseSrtSubtitles(data);
//script.traceObject(trackList);
}
}
});
// constructor code
}
public function changeSize(n:int=0,m:int=0):void{
CFIG["size"]=n;
CFIG["leading"]=m;
trackHide();
trackShow(nowTrackShow);
}
public function sendTime(t: Number): void {
if (isClose) {
return;
}
time = t;
if (trackIndex >= trackList.length) {
trackIndex = 0;
}
var nowTrack: Object = trackList[trackIndex]; //当前编号对应的字幕内容
if(nowTrack==null){
return;
}
/*
this.nowTrackShow=当前显示在界面上的内容
如果当前时间正好在nowTrack时间内,则需要判断
*/
//trace(t,trackIndex,nowTrack["startTime"],nowTrack["endTime"]);
if (t >= nowTrack["startTime"] && t <= nowTrack["endTime"]) {
/*
如果当前显示的内容不等于当前需要显示的内容时,则需要显示正确的内容
*/
var nowShow = nowTrackShow;
if (nowShow["sn"] != nowTrack["sn"]) {
trackHide();
trackShow(nowTrack);
}
} else {
/*
* 如果当前播放时间不在当前编号字幕内,则需要先清空当前的字幕内容,再显示新的字幕内容
*/
//trace("重新计算编号");
trackHide();
checkTrack();
}
}
//==========================================
private function trackShow(track: Object) {
if (isClose) {
return;
}
nowTrackShow = track;
var arr: Array = track["content"];
for (var i: int = 0; i < arr.length; i++) {
var tObj:Object=CFIG;
tObj["type"]="text";
tObj["text"]=arr[i];
/*var tObj:Object={
type: "text",
text: arr[i],
color: CFIG["color"],
size: CFIG["size"],
font: CFIG["font"],
leading: CFIG["leading"],
bold: CFIG["bold"],
alpha: 1
};*/
//if(CFIG.hasOwnProperty("backgroundColor")){
// tObj["backgroundColor"]=CFIG["backgroundColor"];
//}
var obj: Object = {
list: [tObj],
position: [1, 2, null, -(arr.length - i) * CFIG["leading"] - CFIG["marginBottom"]]
};
var ele: String = THIS["addElement"](obj);
trackElement.push(ele);
}
}
/*
内部函数
隐藏字字幕内容
*/
private function trackHide() {
for (var i: int = 0; i < trackElement.length; i++) {
THIS["deleteElement"](trackElement[i]);
}
trackElement = [];
}
/*
内部函数
重新计算字幕的编号
*/
private function checkTrack() {
if (isClose) {
return;
}
var num: int = trackIndex;
var arr: Array = trackList;
var i = 0;
var have = false;
for (i = num; i < arr.length; i++) {
if (time >= arr[i]["startTime"] && time <= arr[i]["endTime"]) {
trackIndex = i;
//trace("新的编号:",time,trackIndex);
have = true;
break;
}
}
if (!have) {
trackIndex = 0;
}
}
//=================================
private function delHtmlTag(str: String) {
return str.replace(/<[^>]+>/g, ""); //去掉所有的html标记
}
private function trim(str: String) {
return str.replace(/(^\s*)|(\s*$)/g, "");
}
private function toSeconds(t: String) { //将时分秒转换成秒
var s: int = 0.0;
if (t) {
var p: Array = t.split(":");
for (var i: int = 0; i < p.length; i++) {
s = s * 60 + parseFloat(p[i].replace(",", "."));
}
}
return s;
}
private function parseSrtSubtitles(srt: String) {
var subtitles: Array = [];
var textSubtitles: Array = [];
var i: int = 0;
var arrs: Array = srt.split("\n");
var arr: Array = [];
for (i = 0; i < arrs.length; i++) {
if (arrs[i].replace(/\s/g, "").length > 0) {
arr.push(arrs[i]);
} else {
if (arr.length > 0) {
textSubtitles.push(arr);
}
arr = [];
}
}
for (i = 0; i < textSubtitles.length; ++i) {
var textSubtitle: Array = textSubtitles[i];
if (textSubtitle.length >= 2) {
var sn: int = textSubtitle[0]; // 字幕的序号
var startTime: Number = toSeconds(trim(textSubtitle[1].split(" --> ")[0])); // 字幕的开始时间
var endTime: Number = toSeconds(trim(textSubtitle[1].split(" --> ")[1])); // 字幕的结束时间
var content: Array = [delHtmlTag(textSubtitle[2])]; // 字幕的内容
if(trackDelay!=0){
startTime+=trackDelay;
endTime+=trackDelay;
}
// 字幕可能有多行
if (textSubtitle.length > 2) {
for (var j = 3; j < textSubtitle.length; j++) {
content.push(delHtmlTag(textSubtitle[j]));
}
}
// 字幕对象
var subtitle: Object = {
sn: sn,
startTime: startTime,
endTime: endTime,
content: content
};
subtitles.push(subtitle);
}
}
return subtitles;
}
public function close(): void {
trackHide();
isClose=true;
}
}
}