no commit message
This commit is contained in:
@@ -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
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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"];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user