12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- import { EventMgr } from "../../Script/Core/Base/EventMgr";
- import { Roker_Move, Roker_End } from "./eventDef";
- const {ccclass, property} = cc._decorator;
- interface iRockerTemp {
- bgOriginPos: cc.Vec2;
- id: number;
- }
- @ccclass
- export default class Rocker extends cc.Component {
- /*===========================自动绑定组件开始===========================*/
- /*自动生成*/
- @property({type:cc.Node, displayName:""})
- private $bg_node:cc.Node = null;
-
- /*自动生成*/
- @property({type:cc.Node, displayName:""})
- private $point_node:cc.Node = null;
- /*自动生成*/
- @property({type:cc.Node, displayName:""})
- private $arrow_node:cc.Node = null;
- /*===========================自动绑定组件结束===========================*/
- /*===========================自动生成按钮事件开始==========================*/
- /*===========================自动生成按钮事件结束==========================*/
- temp: iRockerTemp = {
- bgOriginPos:null,
- id:-1,
- }
- protected onLoad(): void {
- this.temp.bgOriginPos = this.$bg_node.getPosition();
- }
- protected onEnable(): void {
- this.node.on(cc.Node.EventType.TOUCH_START, this.onTouchStart, this);
- this.node.on(cc.Node.EventType.TOUCH_MOVE, this.onTouchMove, this);
- this.node.on(cc.Node.EventType.TOUCH_END, this.onTouchEnd, this);
- this.node.on(cc.Node.EventType.TOUCH_CANCEL, this.onTouchEnd, this);
- }
- protected onDisable(): void {
- this.node.off(cc.Node.EventType.TOUCH_START, this.onTouchStart, this);
- this.node.off(cc.Node.EventType.TOUCH_MOVE, this.onTouchMove, this);
- this.node.off(cc.Node.EventType.TOUCH_END, this.onTouchEnd, this);
- this.node.off(cc.Node.EventType.TOUCH_CANCEL, this.onTouchEnd, this);
- }
- onTouchStart(event: cc.Event.EventTouch) {
- if(this.temp.id != -1) return;
- let pos = event.getLocation();
- pos = this.node.convertToNodeSpaceAR(pos);
- this.$bg_node.setPosition(pos);
- this.temp.id = event.getID();
- }
- onTouchMove(event: cc.Event.EventTouch) {
- if(this.temp.id != event.getID()) return;
- let offset = event.getLocation().sub(event.getStartLocation());
- let angle = 0;
- if(!offset.equals(cc.Vec2.ZERO)) {
- angle = cc.v2(0,1).signAngle(offset) / Math.PI * 180;
- }
- this.$arrow_node.angle = Math.round(angle * 100) / 100;
- let nOffset = offset.normalize();
- if(offset.mag() > 85) {
- this.$point_node.setPosition(nOffset.x * 85, nOffset.y * 85);
- }else{
- this.$point_node.setPosition(offset.x, offset.y);
- }
-
- EventMgr.inst.emit(Roker_Move, nOffset);
- }
- onTouchEnd(event: cc.Event.EventTouch) {
- if(this.temp.id != event.getID()) return;
- this.$bg_node.setPosition(this.temp.bgOriginPos);
- this.$arrow_node.angle = 0;
- this.$point_node.setPosition(0, 0);
- this.temp.id = -1;
- EventMgr.inst.emit(Roker_End);
- }
- }
|