131 lines
5.0 KiB
JavaScript
131 lines
5.0 KiB
JavaScript
(async function() {
|
|
if(typeof PIXI!="object") {
|
|
if(typeof loadfail=="function") {
|
|
loadfail("libpointerfx.js: PIXI(type of "+(typeof PIXI)+") is not an object");
|
|
} else {
|
|
window.alert("libpointerfx.js: PIXI(type of "+(typeof PIXI)+") is not an object");
|
|
}
|
|
return;
|
|
}
|
|
if(typeof Transition!="function") {
|
|
if(typeof loadfail=="function") {
|
|
loadfail("libpointerfx.js: Transition(type of "+(typeof Transition)+") is not an function");
|
|
} else {
|
|
window.alert("libpointerfx.js: Transition(type of "+(typeof Transition)+") is not an function");
|
|
}
|
|
return;
|
|
}
|
|
if(typeof libmain!="object") {
|
|
if(typeof loadfail=="function") {
|
|
loadfail("libpointerfx.js: libmain(type of "+(typeof libmain)+") is not an object");
|
|
} else {
|
|
window.alert("libpointerfx.js: libmain(type of "+(typeof libmain)+") is not an object");
|
|
}
|
|
return;
|
|
}
|
|
|
|
var libpointerfx= {};
|
|
|
|
libpointerfx.fx_template_list=[];
|
|
libpointerfx.fx_instance_map= {};
|
|
libpointerfx.fx_pointer_texture=PIXI.Texture.WHITE;
|
|
|
|
// pack sprite sheet into PIXI.GifSprite
|
|
libpointerfx.fx_tail_anim_textures=[];
|
|
var tail_base=await PIXI.Assets.load({"src":await AssetManager.loadWithCache("./assets/sprite-pointer_tail.png"), "loadParser":"loadTextures"});
|
|
for(var i=9; i>=0; i--) {
|
|
var crop_rect = new PIXI.Rectangle(i*32, 0, 32, 32);
|
|
var t=PIXI.Texture.from(tail_base.source);
|
|
t.frame.x=i*32;
|
|
t.frame.y=0;
|
|
t.frame.width=32;
|
|
t.frame.height=32;
|
|
t.updateUvs();
|
|
libpointerfx.fx_tail_anim_textures.push(t);
|
|
}
|
|
|
|
var on_pointer_down=function(event) {
|
|
var pointer_id=event.pointerType+event.pointerId;
|
|
var fx_instance = new PIXI.Sprite(libpointerfx.fx_pointer_texture);
|
|
fx_instance.anchor.set(0.5, 0.5);
|
|
fx_instance.position.copyFrom(event.global);
|
|
fx_instance.width=4;
|
|
fx_instance.height=4;
|
|
|
|
libpointerfx.fx_instance_map[pointer_id] = fx_instance;
|
|
libmain.scenes.pointer_fx.root.addChild(fx_instance);
|
|
};
|
|
|
|
var on_pointer_move=function(event) {
|
|
var pointer_id=event.pointerType+event.pointerId;
|
|
if(!(pointer_id in libpointerfx.fx_instance_map)) {
|
|
//console.warn("warn: pointer_id `"+pointer_id+"` is NOT in libpointerfx.fx_instance_map");
|
|
return;
|
|
}
|
|
libpointerfx.fx_instance_map[pointer_id].position.copyFrom(event.global);
|
|
|
|
var fx_instance = new PIXI.AnimatedSprite(libpointerfx.fx_tail_anim_textures);
|
|
fx_instance.anchor.set(0.5, 0.5);
|
|
fx_instance.position.copyFrom(event.global);
|
|
fx_instance.width=32;
|
|
fx_instance.height=32;
|
|
fx_instance.animationSpeed=0.4;
|
|
fx_instance.autoUpdate=true;
|
|
fx_instance.currentFrame=0;
|
|
fx_instance.loop=true;
|
|
fx_instance.play();
|
|
|
|
var func_remove=function() {
|
|
libmain.scenes.pointer_fx.root.removeChild(fx_instance);
|
|
};
|
|
libmain.scenes.pointer_fx.root.addChild(fx_instance);
|
|
var fx_end_transition=new Transition();
|
|
fx_end_transition.obj=fx_instance;
|
|
fx_end_transition.key="alpha";
|
|
fx_end_transition.startval=1.0;
|
|
fx_end_transition.endval=0.0;
|
|
fx_end_transition.duration=300;
|
|
fx_end_transition.onend=func_remove;
|
|
fx_end_transition.start();
|
|
};
|
|
|
|
var on_pointer_up=function(event) {
|
|
var pointer_id=event.pointerType+event.pointerId;
|
|
if(!(pointer_id in libpointerfx.fx_instance_map)) {
|
|
//console.warn("warn: pointer_id `"+pointer_id+"` is NOT in libpointerfx.fx_instance_map");
|
|
return;
|
|
}
|
|
var fx_instance_toend=libpointerfx.fx_instance_map[pointer_id];
|
|
delete(libpointerfx.fx_instance_map[pointer_id]);
|
|
var func_remove=function() {
|
|
libmain.scenes.pointer_fx.root.removeChild(fx_instance_toend);
|
|
};
|
|
var fx_end_transition=new Transition();
|
|
fx_end_transition.obj=fx_instance_toend;
|
|
fx_end_transition.key="alpha";
|
|
fx_end_transition.startval=1.0;
|
|
fx_end_transition.endval=0.0;
|
|
fx_end_transition.duration=300;
|
|
fx_end_transition.onend=func_remove;
|
|
fx_end_transition.start();
|
|
};
|
|
|
|
libmain.scenes.pointer_fx.root.interactiveChildren=false;
|
|
|
|
libmain.scenes.pointer_fx.judge_rect.eventMode="static";
|
|
libmain.scenes.pointer_fx.judge_rect.alpha=0.0;
|
|
|
|
libmain.scenes.pointer_fx.judge_rect.on("pointerdown", on_pointer_down);
|
|
libmain.scenes.pointer_fx.judge_rect.on("pointermove", on_pointer_move);
|
|
libmain.scenes.pointer_fx.judge_rect.on("pointerup", on_pointer_up);
|
|
libmain.scenes.pointer_fx.judge_rect.on("pointerout", on_pointer_up);
|
|
|
|
libmain.scenes.pointer_fx.judge_rect.x=0;
|
|
libmain.scenes.pointer_fx.judge_rect.y=0;
|
|
libmain.scenes.pointer_fx.judge_rect.anchor.set(0, 0);
|
|
|
|
//libmain.settings.hud.show_pointerfx
|
|
|
|
window.libpointerfx=libpointerfx;
|
|
console.log("[libpointerfx] initialized successfully.");
|
|
})(); |