Egret社区

斗地主滑动选牌功能

2017-9-13 20:24
4641
module poker
{
    export class PlayerHand extends eui.Component
    {
        private _hands:poker.HandPoker[];
        private _list:number[];
        constructor(){
            super();
            this._hands = [];
            this._list = [];
            for (let i = 0;i < 17;i++){
                let value = this.setRanDom();
                this._list.push(value);
                this._hands.push(new HandPoker());
                this.addChild(this._hands);
            }      
            this.applyHand();
            this.countPos();
        }
        protected childrenCreated() {
            super.childrenCreated();
            for(let i = 0;i < this._hands.length;i++){
                this._hands.addEventListener(egret.TouchEvent.TOUCH_BEGIN,this.touchBegin,this);
                this._hands.addEventListener(egret.TouchEvent.TOUCH_MOVE,this.touchMove,this);
                this.stage.addEventListener(egret.TouchEvent.TOUCH_END,this.touchEnd,this);
            }
        }

        private _pokerBegin:HandPoker;
        private _pokerMove:HandPoker;
        private _targetPanel:HandPoker[] = [];

        private touchBegin(evt:egret.TouchEvent):void{
            this._pokerBegin = evt.target;
            this._targetPanel = [];
            this._targetPanel.push(evt.target);
        }
        private touchMove(evt:egret.TouchEvent):void{
            this._pokerMove = evt.target;
            this.CheckCenter();
        }
        private touchEnd(evt:egret.TouchEvent):void{
            this.CheckEnd();
        }
        private Revert():void{
            for (let i = 0;i < this._hands.length;i++) {
                this._hands.alpha = 1;
            }
        }
        private CheckEnd():void{
            this.Revert();
            for(let i = 0;i < this._targetPanel.length;i++){
                if(this._targetPanel.y == 560){
                    this._targetPanel.y -= 35;
                }
                else{
                    this._targetPanel.y += 35;
                }
            }
            this._targetPanel = [];
            this._pokerBegin = null;
            this._pokerMove = null;
        }
        private CheckCenter():void{
            let begin:number;
            let end:number;
            for (let i = this._hands.length - 1;i >= 0;i--){
                if(this._pokerBegin == this._hands){
                    begin = i;
                    break;
                }
            }
            for (let i = 0;i < this._hands.length;i++){
                if(this._pokerMove == this._hands){
                    end = i;
                    break;
                }
            }
            this.Revert();
            this._targetPanel = [];
            if(begin > end){
                for (let i = begin;i >= end;i--){
                    this._hands.alpha = 0.2;
                    this._targetPanel.push(this._hands);
                }
            }
            else if(end > begin){
                for (let i = begin;i <= end;i++){
                    this._hands.alpha = 0.2;
                    this._targetPanel.push(this._hands);
                }
            }
            else if(end == begin){
                this._targetPanel.push(this._hands[begin]);
            }
        }
        private applyHand():void{
            this._list.sort();
            let start:number = 17-this._list.length;
            for(let i:number = 0;i < start; i++){
                this._hands.visible = false;
            }
            for(let i = start;i < 17;i++){
                let Poker = this._hands;
                Poker.visible = true;
                Poker.initHands(this._list[i-start],i);
            }
        }
        private onClick(evt:egret.TouchEvent):void{
            for (let i = this._list.length - 1;i >= 0;i--){
                if(evt.target.value == this._list) {
                    this._list.splice(i,1);
                    break;
                }
            }
            this.applyHand();   
            this.countPos();
        }

        private countPos():void{
            let pos:number[] = [];
            for (let i = 0;i < this._hands.length;i++){
                if(this._hands.visible)
                    pos.push(this._hands.x);
            }
            let begin = pos[0];
            let end = pos[pos.length-1];
            let pokerCenter = (end - begin) / 2;
            let spacing = pokerCenter -270;
            for (let i = 0;i < this._hands.length;i++) {
                this._hands.x = spacing + (53 * i);
                this._hands.y = 560;
            }
        }


        public setRanDom():number{
            let value = Math.floor(Math.random() * 13);
            value++;
            if(value % 10 == 0)
                return this.setRanDom();
            else
                return value;
        }
    }
}
直接给你们上代码 不明白的可以加我qq364224445
5200.png
分享到 :
5 人收藏

1 个回复

倒序浏览
dily3825002  社区管理员 | 2017-9-14 17:02:11
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

364224445

登堂入室

积分: 29 帖子: 7 精华: 1

楼主热帖

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号

Powered by Discuz! X3.2 © 2001-2016 Comsenz Inc.

返回顶部