删除 YouleNexus 内嵌 .git,统一由根仓库唯一管理。提交: - projects/ 旧 H5 模板 Game_Surface_3 与各子游戏源码 - cocoscreator_projects/YouleNexus 工程 + cocos-creator-mcp 扩展源码 - CLAUDE.md、.mcp.json 等配置 library/temp/node_modules/dist 等缓存由 .gitignore 排除。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
669 lines
15 KiB
JavaScript
669 lines
15 KiB
JavaScript
/*
|
|
默认动画:
|
|
|
|
放大缩小 zoom 参数:目标倍数,时间(不是秒,是一个值,自己调一调)
|
|
旋转 rotate 参数:目标倍数,时间(不是秒,是一个值,自己调一调)
|
|
定向移动 move 参数:方向,距离,时间(不是秒,是一个值,自己调一调)
|
|
定点移动 moveTo 参数:目标位置[100,100],时间(不是秒,是一个值,自己调一调)
|
|
|
|
|
|
是否正在播放
|
|
if (!AM.is_play(5)) {
|
|
同时播放:边放大,边旋转
|
|
|
|
放大到200
|
|
AM.add(5).bfunc(function(){
|
|
该链式动画开始之前执行
|
|
}).zoom(200,35).func(function(){
|
|
该链式动画完成时执行,此时不能再次执行同一ID的动画
|
|
}).start();
|
|
同时旋转30度
|
|
AM.new(5).bfunc(function(){
|
|
该链式动画开始之前执行
|
|
}).rotate(get_self(5,34)+30,30).func(function(){
|
|
该链式动画完成时执行,此时不能再次执行同一ID的动画
|
|
}).start();
|
|
}
|
|
|
|
是否正在播放
|
|
if (!AM.is_play(5)) {
|
|
逐步播放:先放大到200,然后旋转30度
|
|
|
|
先放大到200,然后旋转30度
|
|
AM.add(5).bfunc(function(){
|
|
该链式动画开始之前执行
|
|
}).zoom(200,35).rotate(get_self(5,34)+30,30).func(function(){
|
|
该链式动画完成时执行,此时不能再次执行同一ID的动画
|
|
}).start();
|
|
};
|
|
|
|
清除所有动画
|
|
AM.clear() 一个参数:
|
|
空:默认为false,会直接变为理想状态
|
|
true :回到未执行完的动画的初始状态。
|
|
AM.remove() 两个参数:
|
|
一:id:清除某ID的动画
|
|
二:空:默认为false,会直接变为理想状态
|
|
true :回到未执行完的动画的初始状态。
|
|
|
|
|
|
*/
|
|
|
|
function HAnimation(desc){
|
|
this.desc=desc||"";
|
|
var item=[];//动画序列
|
|
var playID=[];//l
|
|
var deploy=0;//延迟
|
|
var id=0,
|
|
duration=0;
|
|
var king={};
|
|
var currentPlay=null;
|
|
var currentP=[];
|
|
var pos=[];
|
|
var opos=[];
|
|
var self=this;
|
|
self.isPlaying=0;
|
|
var toO=false;
|
|
var toend=false;
|
|
var repp=false;
|
|
var func=function(){};
|
|
var bfunc=function(){};
|
|
var result={}
|
|
//var one_by_one={
|
|
//id:0,
|
|
//item:[],
|
|
//currentPlay:null,
|
|
//isPlaying:0,
|
|
//pos:[],
|
|
//opos:[],
|
|
//toO:false,
|
|
//repp:false,
|
|
//func:function(){},
|
|
//}
|
|
this.register=function(obj){
|
|
if (self.isPlaying == 1) {
|
|
//console.log("该动画已经在运行了");
|
|
return king;
|
|
}
|
|
id = obj;
|
|
pos = [];
|
|
opos = [];
|
|
currentPlay = null;
|
|
currentP = [];
|
|
self.isPlaying = 0;
|
|
pos = [get_self(id, 18, 0, 0), get_self(id, 19, 0, 0)];
|
|
opos = [get_self(id, 18, 0, 0), get_self(id, 19, 0, 0)];
|
|
return king;
|
|
};
|
|
king.bfunc=function(funcc){
|
|
bfunc = funcc||bfunc;
|
|
return king;
|
|
};
|
|
king.func=function(funcc){
|
|
func = funcc||func;
|
|
return king;
|
|
};
|
|
king.repeat=function(self){
|
|
if (self==0) {
|
|
stop();
|
|
}
|
|
repp=true;
|
|
return king;
|
|
};
|
|
this.set_end=function(end){
|
|
toend=end;
|
|
}
|
|
this.set_toO=function(O){
|
|
toO=O;
|
|
};
|
|
king.set_end=function(end){
|
|
toend=end;
|
|
};
|
|
king.set_toO=function(O){
|
|
toO=O;
|
|
};
|
|
//预设动画:左移,右移,上移,下移,定向移动
|
|
king.wait=function(time,func){
|
|
var tim=time||0;
|
|
var func=func||function(){};
|
|
var otime=tim;
|
|
var piecea=function(otime){
|
|
if (time==0) {
|
|
time=otime;
|
|
func();
|
|
return 2;
|
|
}
|
|
time=time-1;
|
|
return 1;
|
|
}
|
|
item[item.length]={id:item.length,state:0,argu:arguments,func:piecea,pos:pos}
|
|
return king;
|
|
}
|
|
king.path=function(mpos,time,func){
|
|
result[18]=mpos[0]
|
|
result[19]=mpos[1]
|
|
var pp=Math.abs(pos[1]-mpos[1])/time;
|
|
console.log(pos[1],mpos[1],time,pp)
|
|
var path=function(mpos){
|
|
var A=new Point(pos[0],pos[1]);
|
|
var B=new Point(mpos[0],mpos[1]);
|
|
if (get_self(id,18)<mpos[0]) {
|
|
set_self(id, 18,pp, 1, 0);
|
|
}else if (get_self(id,18)>mpos[0]){
|
|
set_self(id, 18,pp, 2, 0);
|
|
}
|
|
var y;
|
|
if (B.x==A.x) {
|
|
var y=B.y;
|
|
}else{
|
|
y=func(A,B,get_self(id, 18));
|
|
}
|
|
set_self(id, 19,y, 0, 0);
|
|
// get_self(id, 18, 0, 0)==mpos[0]&&get_self(id, 19, 0, 0)==mpos[1]
|
|
if (Math.abs(get_self(id, 18, 0, 0)-mpos[0])<10&&Math.abs(get_self(id, 19, 0, 0)-mpos[1])<10) {
|
|
set_self(id,18,mpos[0],0,0);
|
|
set_self(id,19,mpos[1],0,0);
|
|
return 2;
|
|
}
|
|
return 1;
|
|
}
|
|
item[item.length]={id:item.length,state:0,argu:arguments,func:path,pos:pos}
|
|
return king;
|
|
}
|
|
king.moveTo=function(mpos,time){
|
|
var pp;
|
|
if (pos[0]!=mpos[0]) {
|
|
pp=Math.abs(pos[0]-mpos[0])/time;
|
|
}else{
|
|
pp=Math.abs(pos[1]-mpos[1])/time;
|
|
}
|
|
result[18]=mpos[0]
|
|
result[19]=mpos[1]
|
|
var moveTo=function(mpos){
|
|
var A=new Point(pos[0],pos[1]);
|
|
var B=new Point(mpos[0],mpos[1]);
|
|
if ((B.y-A.y)==0&&(B.x-A.x)==0) {
|
|
return 2;
|
|
}
|
|
if (get_self(id,18)<mpos[0]) {
|
|
set_self(id, 18,pp, 1, 0);
|
|
}else if (get_self(id,18)>mpos[0]){
|
|
set_self(id, 18,pp, 2, 0);
|
|
}
|
|
var y;
|
|
if (B.x==A.x) {
|
|
var y=B.y;
|
|
}else{
|
|
y=(B.y-A.y)/(B.x-A.x)*(get_self(id, 18, 0, 0)-A.x)+A.y;
|
|
}
|
|
set_self(id, 19,y, 0, 0);
|
|
//if (get_self(id,19)<mpos[1]) {
|
|
////console.log("MOVETO"+get_self(id,19));
|
|
//set_self(id, 19,1, 1, 0);
|
|
//}else if (get_self(id,19)>mpos[1]){
|
|
////console.log("MOVETO"+get_self(id,19));
|
|
//set_self(id, 19,1, 2, 0);
|
|
//}
|
|
if (Math.abs(get_self(id, 18, 0, 0)-mpos[0])<10&&Math.abs(get_self(id, 19, 0, 0)-mpos[1])<10) {
|
|
//console.log("MOVETO",mpos[0],mpos[1]);
|
|
set_self(id,18,mpos[0],0,0);
|
|
set_self(id,19,mpos[1],0,0);
|
|
return 2;
|
|
}
|
|
return 1;
|
|
}
|
|
item[item.length]={id:item.length,state:0,argu:arguments,func:moveTo,pos:pos}
|
|
return king;
|
|
}
|
|
king.move=function(type,mile,time){
|
|
if (type=='right') {
|
|
result[18]=pos[0]+mile
|
|
}else if (type=='left') {
|
|
result[18]=pos[0]-mile
|
|
}else if (type=='up') {
|
|
result[19]=pos[1]-mile
|
|
}else if (type=='down') {
|
|
result[19]=pos[1]+mile
|
|
}
|
|
var pp=mile/time;
|
|
var moveGo=function(type,mile){
|
|
////console.log(type);
|
|
if (type=='right') {
|
|
set_self(id, 18,pp, 1, 0);
|
|
if ((get_self(id, 18, 0, 0)-pos[0])>= mile) {
|
|
pos[0]=pos[0]+mile;//-get_self(id, 20, 0, 0);
|
|
set_self(id,18,pos[0],0,0);
|
|
//console.log('right'+id);
|
|
return 2;
|
|
}
|
|
}else if (type=='left') {
|
|
set_self(id, 18,pp, 2, 0);
|
|
if ((pos[0]-get_self(id, 18, 0, 0))>= mile) {
|
|
pos[0]=pos[0]-mile;
|
|
//console.log('left'+id);
|
|
set_self(id,18,pos[0],0,0);
|
|
return 2;
|
|
}
|
|
}else if (type=='up') {
|
|
set_self(id, 19,pp, 2, 0);
|
|
if ((pos[1]-get_self(id, 19, 0, 0))>= mile) {
|
|
pos[1]=pos[1]-mile;
|
|
set_self(id,19,pos[1],0,0);
|
|
//console.log('up'+id);
|
|
return 2;
|
|
}
|
|
}else if (type=='down') {
|
|
set_self(id, 19,pp, 1, 0);
|
|
if ((get_self(id, 19, 0, 0)-pos[1])>= mile) {
|
|
pos[1]=pos[1]+mile;
|
|
set_self(id,19,pos[1],0,0);
|
|
//console.log('down'+id);
|
|
return 2;
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
item[item.length]={id:item.length,state:0,argu:arguments,func:moveGo,pos:pos}
|
|
return king;
|
|
}
|
|
king.zoom=function(beishu,time){
|
|
//console.log("zoomBB");
|
|
var pp;
|
|
console.log(beishu)
|
|
if (beishu<0) {
|
|
pp=-beishu/time;
|
|
}else{
|
|
pp=beishu/time;
|
|
}
|
|
result[33]=beishu
|
|
var zoom=function(beishu){
|
|
//console.log(beishu);
|
|
if(beishu>=get_self(id,33,0,0)){
|
|
set_self(id,33,pp,1,0);
|
|
if (get_self(id,33,0,0)>=beishu) {
|
|
//console.log("zoomBB");
|
|
set_self(id,33,beishu,0,0);
|
|
return 2;
|
|
}
|
|
}else{
|
|
set_self(id,33,pp,2,0);
|
|
if (get_self(id,33,0,0)<=beishu) {
|
|
//console.log("zoomSS");
|
|
set_self(id,33,beishu,0,0);
|
|
return 2;
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
item[item.length]={id:item.length,state:0,argu:arguments,func:zoom,pos:pos}
|
|
return king;
|
|
}
|
|
king.rotate=function(beishu,time){
|
|
//console.log("rotateAA");
|
|
var pp;
|
|
if (beishu<0) {
|
|
pp=-beishu/time;
|
|
}else if (beishu>0){
|
|
pp=beishu/time;
|
|
}else{
|
|
pp=(0-get_self(id,34,0,0))/time;
|
|
}
|
|
result[34]=beishu
|
|
var rotate=function(beishu){
|
|
if(beishu>=get_self(id,34,0,0)){
|
|
set_self(id,34,pp,1,0);
|
|
if (get_self(id,34,0,0)>=beishu) {
|
|
//console.log("rotateAA");
|
|
set_self(id,34,beishu,0,0);
|
|
return 2;
|
|
}
|
|
}else{
|
|
set_self(id,34,pp,2,0);
|
|
if (Math.abs(get_self(id,34,0,0))>=Math.abs(beishu)) {
|
|
//console.log("rotateBB",get_self(id,34,0,0),beishu);
|
|
set_self(id,34,beishu,0,0);
|
|
return 2;
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
item[item.length]={id:item.length,state:0,argu:arguments,func:rotate,pos:pos}
|
|
return king;
|
|
}
|
|
|
|
|
|
king.alpha=function(beishu,time){
|
|
//console.log("rotateAA");
|
|
var pp;
|
|
var last=result[35]||255
|
|
if (result[35]!=undefined&&result[35]==0) {
|
|
last=0;
|
|
}
|
|
pp=Math.abs(last-beishu)/time;
|
|
console.log("pppp",last)
|
|
result[35]=beishu
|
|
var alpha=function(beishu){
|
|
if(beishu>=get_self(id,35,0,0)){
|
|
set_self(id,35,pp,1,0);
|
|
if (get_self(id,35,0,0)>=beishu) {
|
|
//console.log("rotateAA");
|
|
set_self(id,35,beishu,0,0);
|
|
return 2;
|
|
}
|
|
}else{
|
|
set_self(id,35,pp,2,0);
|
|
if (get_self(id,35,0,0)<=beishu) {
|
|
//console.log("rotateBB",get_self(id,34,0,0),beishu);
|
|
set_self(id,35,beishu,0,0);
|
|
return 2;
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
item[item.length]={id:item.length,state:0,argu:arguments,func:alpha,pos:pos}
|
|
return king;
|
|
}
|
|
|
|
king.start=function(open){
|
|
if (item.length==0) {
|
|
return
|
|
}
|
|
//set_self(id,18,opos[0],0,0);
|
|
//set_self(id,19,opos[1],0,0);
|
|
//set_self(id,34,0,0,0);
|
|
//set_self(id,33,100,0,0);
|
|
currentPlay = null;
|
|
self.isPlaying = 1;
|
|
bfunc();
|
|
set_self(id, 57, 1, 0, 0);//开启定时器
|
|
}
|
|
|
|
this.start=function(open){
|
|
if (item.length==0) {
|
|
return
|
|
}
|
|
//set_self(id,18,opos[0],0,0);
|
|
//set_self(id,19,opos[1],0,0);
|
|
//set_self(id,34,0,0,0);
|
|
//set_self(id,33,100,0,0);
|
|
currentPlay = null;
|
|
self.isPlaying = 1;
|
|
bfunc();
|
|
set_self(id, 57, 1, 0, 0);//开启定时器
|
|
}
|
|
var stop=function(){
|
|
if (toO) {
|
|
set_self(id,18,opos[0],0,0);
|
|
set_self(id,19,opos[1],0,0);
|
|
set_self(id,34,0,0,0);
|
|
set_self(id,33,100,0,0);
|
|
}
|
|
currentPlay = null;
|
|
self.isPlaying = 0;
|
|
item = [];
|
|
}
|
|
this.show=function(){
|
|
//console.log(item);
|
|
}
|
|
this.end=function(O){
|
|
toO=O;
|
|
if (O==undefined) {
|
|
toO=false;
|
|
}
|
|
for (var key in result) {
|
|
set_self(id,parseInt(key),parseInt(result[key]),0,0);
|
|
//console.log("id=="+id+" key:"+key+",desc:"+result[key]);
|
|
}
|
|
stop();
|
|
func();
|
|
}
|
|
this.ontimer=function(gameid,spid){
|
|
if (spid!=id) {
|
|
return;
|
|
}
|
|
if (toend) {
|
|
if (toO) {
|
|
|
|
}else{
|
|
|
|
if (item.length!=0) {
|
|
for (var key in result) {
|
|
set_self(id,parseInt(key),parseInt(result[key]),0,0);
|
|
//console.log("id=="+id+" key:"+key+",desc:"+result[key]);
|
|
}
|
|
//console.log(result)
|
|
}
|
|
}
|
|
stop();
|
|
func();
|
|
}
|
|
if (item.length==0) {
|
|
return;
|
|
}
|
|
if (currentPlay==null) {
|
|
currentPlay=item[0];
|
|
currentPlay.state=1;
|
|
}
|
|
if (currentPlay.state==2) {//播放结束
|
|
if (currentPlay.id<item.length-1) {
|
|
currentPlay=item[currentPlay.id+1];
|
|
currentPlay.state=1;
|
|
}else{
|
|
if (repp==false) {
|
|
////console.log(item);
|
|
//console.log("执行结果:");
|
|
stop();
|
|
func();
|
|
return;
|
|
}else{
|
|
if (toO) {
|
|
|
|
set_self(id,18,opos[0],0,0);
|
|
set_self(id,19,opos[1],0,0);
|
|
set_self(id,34,0,0,0);
|
|
set_self(id,33,100,0,0);
|
|
}
|
|
pos=[opos[0],opos[1]];
|
|
currentPlay=item[0];
|
|
currentPlay.state=1;
|
|
}
|
|
|
|
}
|
|
}
|
|
////console.log(spid);
|
|
if (spid==id) {
|
|
if (currentPlay.state==1) {
|
|
var state=currentPlay.func.apply(null,currentPlay.argu);//Array.prototype.slice.call(arguments, 0));
|
|
currentPlay.state=state;
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
/*
|
|
|
|
*/
|
|
//var HA=app.register("Animation1",new HAnimation("1"));
|
|
//var HAn=app.register("Animation2",new HAnimation("2"));
|
|
//HA.item=[];
|
|
//HA.add=function(desc){
|
|
//HA.item.push(new HAnimation(desc))
|
|
//}
|
|
//HA.get=function(pos){
|
|
//if (!HA.item[pos]) {
|
|
//HA.item[pos]=new HAnimation("")
|
|
//}
|
|
//return HA.item[pos]
|
|
//}
|
|
|
|
function AManager(){
|
|
var self=this;
|
|
this.animantions={};
|
|
var king={};
|
|
this.add=function(id){
|
|
var animation;
|
|
if (!self.animantions[id]) {
|
|
self.animantions[id]=[];
|
|
animation=new HAnimation("")
|
|
//console.log(animation)
|
|
self.animantions[id].push(animation)
|
|
}
|
|
animation=self.animantions[id][self.animantions[id].length-1]
|
|
return animation.register(id)
|
|
}
|
|
this.new=function(id){
|
|
animation=new HAnimation("")
|
|
self.animantions[id].push(animation)
|
|
return animation.register(id)
|
|
}
|
|
this.action=function(id){
|
|
if (self.animantions[id]) {
|
|
animation = self.animantions[id]
|
|
for (var i = 0; i < animation.length; i++) {
|
|
animation[i].start();
|
|
}
|
|
}
|
|
}
|
|
this.get=function(id){
|
|
if (self.animantions[id]) {
|
|
return self.animantions[id]
|
|
}
|
|
return;
|
|
//throw "该 id=="+id+" 不存在或者没有动画列表"
|
|
}
|
|
this.is_play=function(id){
|
|
//this.get(id)
|
|
animation=this.get(id);
|
|
if (animation==undefined) {
|
|
return false;
|
|
}
|
|
for (var i = 0; i < animation.length; i++) {
|
|
if (animation[i].isPlaying==1) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
this.cls_id=function(id){
|
|
if (self.animantions[id]) {
|
|
set_self(id, 57, 0, 0, 0);
|
|
delete self.animantions[id];
|
|
}
|
|
|
|
}
|
|
this.remove=function(id,end){
|
|
if (self.animantions[id]) {
|
|
animation=self.animantions[id];
|
|
for (var i = 0; i < animation.length; i++) {
|
|
animation[i].end(end);
|
|
}
|
|
delete self.animantions[id];
|
|
}
|
|
}
|
|
this.mremove=function(id){
|
|
delete self.animantions[id];
|
|
}
|
|
this.clear=function(end){
|
|
if (end==undefined) {
|
|
end=false
|
|
}
|
|
for (var anim in self.animantions) {
|
|
animation=self.animantions[anim];
|
|
for (var i = 0; i < animation.length; i++) {
|
|
animation[i].end(end);
|
|
}
|
|
}
|
|
self.animantions={};
|
|
}
|
|
this.clear_exrepp=function(end){
|
|
if (end==undefined) {
|
|
end=false
|
|
}
|
|
for (var anim in self.animantions) {
|
|
animation=self.animantions[anim];
|
|
not=0;
|
|
for (var i = 0; i < animation.length; i++) {
|
|
if (animation[i].get_repeat()==true) {
|
|
not=animation;
|
|
break;
|
|
}
|
|
}
|
|
console.log(not);
|
|
if (not==0) {
|
|
for (var i = 0; i < animation.length; i++) {
|
|
animation[i].end(end);
|
|
}
|
|
delete self.animantions[anim];
|
|
}
|
|
}
|
|
}
|
|
this.ontimer=function(gameid,spid){
|
|
if (self.animantions[spid]==undefined) {
|
|
//if (spid!=800&&spid!=801&&spid!=802&&spid!=803&&spid!=804&&spid!=805) {
|
|
//set_self(spid, 57, 0, 0, 0);
|
|
//}
|
|
// set_self(spid, 57, 0, 0, 0);
|
|
//console.log(spid);
|
|
return;
|
|
}
|
|
animation=self.animantions[spid];
|
|
for (var i = 0; i < animation.length; i++) {
|
|
if (animation[i].isPlaying==1) {
|
|
return;
|
|
}
|
|
}
|
|
delete self.animantions[spid];
|
|
set_self(spid, 57, 0, 0, 0);
|
|
}
|
|
this.ex=function(){
|
|
var alist=[]
|
|
for (var anim in self.animantions) {
|
|
animation=self.animantions[anim];
|
|
for (var i = 0; i < animation.length; i++) {
|
|
alist.push(animation[i]);
|
|
}
|
|
}
|
|
return alist
|
|
}
|
|
}
|
|
AM=app.register_manager("AManager",new AManager());
|
|
|
|
//var AManager={
|
|
//animantions:{},
|
|
//add:function(id){
|
|
//if (!this.animantions[id]) {
|
|
//animation=new HAnimation("")
|
|
//this.animantions[id]=animation
|
|
//}else{
|
|
//this.animantions[id]
|
|
//}
|
|
//return animation
|
|
//}
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|