/** * Created by admin on 2018-03-07. */ var bm = {};//버튼 매니저 import GD from './human.min' import gc from './GC' import { TimelineLite, Sine, TweenMax } from './TweenMax.min' bm.buttonEvent = function (obj, clickEfBool, start, move, end, out, preact) { bm.setTouchId(null); obj.basicScaleX = obj.scale.x; obj.basicScaleY = obj.scale.y; bm.setInClick(obj, false); if (gc.IS_MOBILE) { //터치 시작 obj.touchstart = (function (e) { if (!obj.inClick) { e.stopPropagation(); if (start != null && start != undefined) { bm.setInClick(obj, true); if (clickEfBool) {//클릭했을 때의 오브젝트 이펙트 여부 if (preact) { start(e); bm.clickEffect(obj, (function () { bm.setInClick(obj, false); }).bind(this)); } else { bm.clickEffect(obj, (function () { start(e); bm.setInClick(obj, false); }).bind(this)); } } else {//클릭했을 때 이펙트 없음 start(e); if (!move && !end && !out) bm.setInClick(obj, false); if (!this.touchId) bm.setTouchId(e.data.identifier);//처음 클릭한 터치 아이디 저장 } } else { bm.setInClick(obj, true); if (!this.touchId) bm.setTouchId(e.data.identifier);//처음 클릭한 터치 아이디 저장 } } }).bind(this); //터치 움직임 obj.touchmove = (function (e) { if (obj.inClick) { if (this.touchId == e.data.identifier) { e.stopPropagation(); if (move != null && move != undefined) { move(e); } } } }).bind(this); //터치 끝남 obj.touchend = (function (e) { GD.fullScreen(); if (obj.inClick) { if (this.touchId == e.data.identifier) { e.stopPropagation(); if (end != null && end != undefined) { if (clickEfBool) {//클릭했을 때의 오브젝트 이펙트 여부 if (preact) { end(e); bm.setTouchId(null); bm.clickEffect(obj, (function () { bm.setInClick(obj, false); }).bind(this)); } else { bm.clickEffect(obj, (function () { end(e); bm.setInClick(obj, false); bm.setTouchId(null); }).bind(this)); } } else { end(e); bm.setInClick(obj, false); bm.setTouchId(null); } } } } }).bind(this); //터치 나감 obj.touchout = obj.touchendoutside = (function (e) { if (obj.inClick) { if (this.touchId == e.data.identifier) { e.stopPropagation(); if (out != null && out != undefined) { if (clickEfBool) {//클릭했을 때의 오브젝트 이펙트 여부 if (preact) { out(e); bm.setTouchId(null); bm.clickEffect(obj, (function () { bm.setInClick(obj, false); }).bind(this)); } else { bm.clickEffect(obj, (function () { out(e); bm.setInClick(obj, false); bm.setTouchId(null); }).bind(this)); } } else { out(e); bm.setInClick(obj, false); bm.setTouchId(null); } } else {//범위를 나갔을 때의 따로 처리가 없는 경우 if (end != null && end != undefined) { if (clickEfBool) {//클릭했을 때의 오브젝트 이펙트 여부 if (preact) { end(e); bm.setTouchId(null); bm.clickEffect(obj, (function () { bm.setInClick(obj, false); }).bind(this)); } else { bm.clickEffect(obj, (function () { end(e); bm.setInClick(obj, false); bm.setTouchId(null); }).bind(this)); } } else { end(e); bm.setInClick(obj, false); bm.setTouchId(null); } } } } } }); } //pc에서 플레이중일 때 else { //터치 시작 obj.mousedown = obj.touchstart = (function (e) { if (!obj.inClick) { e.stopPropagation(); if (start != null && start != undefined) { bm.setInClick(obj, true); if (clickEfBool) {//클릭했을 때의 오브젝트 이펙트 여부 if (preact) { start(e); bm.clickEffect(obj, (function () { bm.setInClick(obj, false); }).bind(this)); } else { bm.clickEffect(obj, (function () { start(e); bm.setInClick(obj, false); }).bind(this)); } } else { start(e); if (!move && !end && !out) bm.setInClick(obj, false); } } else { bm.setInClick(obj, true); } } }).bind(this); //터치 움직임 obj.mousemove = obj.touchmove = (function (e) { if (obj.inClick) { e.stopPropagation(); if (move != null && move != undefined) { move(e); } } }).bind(this); //터치 끝남 obj.mouseup = obj.touchend = (function (e) { if (obj.inClick) { e.stopPropagation(); if (end != null && end != undefined) { if (clickEfBool) {//클릭했을 때의 오브젝트 이펙트 여부 if (preact) { end(e); bm.clickEffect(obj, (function () { bm.setInClick(obj, false); }).bind(this)); } else { bm.clickEffect(obj, (function () { end(e); bm.setInClick(obj, false); }).bind(this)); } } else { end(e); bm.setInClick(obj, false); } } } }).bind(this); //터치 나감 obj.mouseout = obj.touchout = obj.mouseupoutside = obj.touchendoutside = (function (e) { if (obj.inClick) { e.stopPropagation(); if (out != null && out != undefined) { if (clickEfBool) {//클릭했을 때의 오브젝트 이펙트 여부 if (preact) { out(e); bm.clickEffect(obj, (function () { bm.setInClick(obj, false); }).bind(this)); } else { bm.clickEffect(obj, (function () { out(e); bm.setInClick(obj, false); }).bind(this)); } } else { out(e); bm.setInClick(obj, false); } } else {//범위를 나갔을 때의 따로 처리가 없는 경우 if (end != null && end != undefined) { if (clickEfBool) {//클릭했을 때의 오브젝트 이펙트 여부 if (preact) { end(e); bm.clickEffect(obj, (function () { bm.setInClick(obj, false); }).bind(this)); } else { bm.clickEffect(obj, (function () { end(e); bm.setInClick(obj, false); }).bind(this)); } } else { end(e); bm.setInClick(obj, false); } } } } }); } }; bm.clickEffect = function (obj, func) { //오브젝트 크기 초기화 obj.scale.x = obj.basicScaleX; obj.scale.y = obj.basicScaleY; var time = 0.02; //커졌다 작아지기 // TweenMax.fromTo(obj.scale, time, { x: obj.scale.x, y: obj.scale.y }, { x: obj.scale.x - 0.1, y: obj.scale.y - 0.1, onComplete: (function () { // TweenMax.fromTo(obj.scale, time, { x: obj.scale.x, y: obj.scale.y }, { x: obj.scale.x + 0.2, y: obj.scale.y + 0.2, onComplete: (function () { // TweenMax.fromTo(obj.scale, time, { x: obj.scale.x, y: obj.scale.y }, { x: obj.scale.x - 0.1, y: obj.scale.y - 0.1, onComplete: (function () { // //오브젝트 터치 활성화 // // obj.interactive = true; // if (func != null && func != undefined) func(); // }) }); // }).bind(this) }); // }).bind(this) }); //작아졌다 커지기 TweenMax.to(obj.scale, time, { x: obj.scale.x - 0.1, y: obj.scale.y - 0.1, yoyo: true, repeat: 1, onComplete: (function () { //오브젝트 터치 활성화 // obj.interactive = true; if (func != null && func != undefined) func(); }).bind(this) }); }; //해당 오브제트가 클릭되어있는 상태인지 여부 설정 bm.setInClick = function (obj, bool) { obj.inClick = bool; }; //터치 아이디 설정 bm.setTouchId = function (id) { this.touchId = id; }; module.exports = bm;