| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- cc.Class({
- extends: cc.Component,
- properties: {
- index: 300,
- _graphics: cc.Graphics,
- //是否跟随目标来画路径
- followTarget: false,
- //目标位置
- target: cc.Node,
- _PStart: null,
- _pNext: null,
- _isInit: false,//只设置一次
- //是否使用数组来画路径
- followPath: false,
- //用点来初始化路径
- _initPoint: false,
- //开始第一次绘制
- _pointStart: false,
- },
- onLoad() {
- if (this.node.getComponent(cc.Graphics)) {
- this._graphics = this.node.getComponent(cc.Graphics);
- } else {
- this._graphics = this.node.addComponent(cc.Graphics);
- }
- },
-
- //根据目标画线
- DrawLineFromTarget(){
- if (this.followTarget && this.target) {
- this._graphics.clear();
- this._graphics.lineWidth = 3;
- this._graphics.strokeColor = cc.Color.GREEN;
- this._PStart = this.target.getPosition();
- this._POld = null;
- this._isSet = false;
- this._isInit = false;
- this.unschedule(this.callback);
- this.schedule(this.callback = function () {
- if (this._POld&&this._isSet) {
- if (this._POld.sub(this.target.position).mag() == 0) {
- // 取消这个计时器
- this.unschedule(this.callback);
- // cc.log('取消这个计时器.')
- }
- }
- if (this._isInit) {
- this._graphics.lineTo(this.target.x, this.target.y);
- }
- else {
- this._isInit = true;
- this._pNext = this.target.getPosition();
- this._graphics.moveTo(this._PStart.x, this._PStart.y);
- this._graphics.lineTo(this._pNext.x, this._pNext.y);
- }
- this._graphics.stroke();
- if(!this._isSet){
- this._POld = this.target.position;
- }
- this._isSet = !this._isSet;
- }, 0.1, 2000, 0);
- }
- },
- AddDrawNode() {
- this.index += 300;
- this._graphics.lineTo(this.index, this.index + Math.floor(Math.random() * 100));
- this._graphics.stroke();
- },
- InitDrawNode(pStart, pNext) {
- this._graphics.clear();
- this._graphics.lineWidth = 3;
- this._graphics.strokeColor = cc.Color.GREEN;
- this._graphics.moveTo(pStart.x, pStart.y);
- this._graphics.lineTo(pNext.x, pNext.y);
- this._graphics.stroke();
- },
- // UpdateTargetNode(target) {
- // this._graphics.lineTo(target.x, target.y);
- // this._graphics.stroke();
- // },
- //用路径来绘制
- //cc.v2
- onDrawFromPath(path) {
- if (!path) {
- cc.error('onDrawFromPath 参数为Null.');
- return;
- }
- var _initPath = false;
- this._graphics.clear();
- this._graphics.lineWidth = 3;
- this._graphics.strokeColor = cc.Color.YELLOW;
- let pathIndex = 0;
- let pStart = path[pathIndex];
- let pNext = null;
- this.schedule(function () {
- if (_initPath) {
- pathIndex++;
- if (pathIndex > path.length - 1) {
- cc.log('数组绘制完成。');
- return;
- }
- pNext = path[pathIndex];
- this._graphics.lineTo(pNext.x, pNext.y);
- this._graphics.stroke();
- }
- else {
- _initPath = true;
- pathIndex++;
- pNext = path[pathIndex];
- this._graphics.moveTo(pStart.x, pStart.y);
- this._graphics.lineTo(pNext.x, pNext.y);
- this._graphics.stroke();
- }
- }, 0.3, 2000, 1);
- },
- //用点来绘制
- //cc.v2
- onDrawFromPoint(point) {
- if (!point) {
- cc.error('onDrawFromPoint 参数为Null.');
- return;
- }
- if (!this._initPoint) {
- this._graphics.clear();
- this._graphics.lineWidth = 3;
- this._graphics.strokeColor = cc.Color.RED;
- this._PStart = point;
- this._initPoint = true;
- } else {
- this._pNext = point;
- if (!this._pointStart) {
- this._graphics.moveTo(this._PStart.x, this._PStart.y);
- this._graphics.lineTo(this._pNext.x, this._pNext.y);
- this._pointStart = true;
- } else {
- this._graphics.lineTo(this._pNext.x, this._pNext.y);
- }
- this._graphics.stroke();
- }
- },
- //cc.v2
- onDrawFromTwoPoints(point1, piont2) {
- // this._graphics.clear();
- this._graphics.strokeColor = cc.Color.GREEN;
- // this._graphics.strokeColor = cc.hexToColor('#FFFF00');
- this._graphics.moveTo(point1.x, point1.y);
- this._graphics.lineTo(piont2.x, piont2.y);
- },
- onStroke() {
- this._graphics.stroke();
- }
- // update(dt) {
- // },
- });
|